Files
TeslaSuite/Console
CydandClaude Fable 5 6a77fd0991 Console: DOSBox IPs (+100) checkbox on all four game pages
The DOSBox-X preservation pods run the original DOS builds of BattleTech
4.10 / Red Planet 4.10 inside an emulator whose bridged NIC is enumerated
100 above the host pod's last octet. A new checkbox on each game page
(RP Death Race / Martian Football, BT Free For All / No Return) shifts
every siteconfig address the page uses by +100 so the same pages control
either version of the games:

- Munga game connections (port 1501) target host+100; toggling the box
  drops and reconnects any requested pods at the new address.
- Mission egg player and camera entries carry the shifted address.
- The checkbox locks while a mission is loaded/running, like the other
  mission properties.

Launcher / site-management traffic is untouched -- those services still
run on the pod host itself. Pages share a pod's MungaGame, so the most
recent page to toggle or enable wins if two pages fight over one pod.

Verified end-to-end against vPOD: netstat shows the game connection move
127.0.0.1 -> 127.0.0.101 -> 127.0.0.1 as the box is toggled, and the egg
received by vPOD carries pilot=127.0.0.101. All 103 diff tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 14:59:58 -05:00
..

TeslaConsole

Reconstructed C# source for the original TeslaConsole.exe — the operator console that drives the cockpit pods (the counterpart to TeslaLauncherService / TeslaLauncherAgent).

Provenance

This source was recovered by decompiling the original managed assembly with ILSpy (ilspycmd 7.2). The original TeslaConsole.exe is a .NET Framework 2.0 WinForms application (assets/Tesla Console/TeslaConsole.exe, dated 2012). The reconstructed project here is retargeted to .NET Framework 4.8 so it builds with current tooling; it is otherwise a faithful decompilation, not a rewrite.

Decompiled code is functionally equivalent to the original but not character-for-character identical to the lost sources. Local variable names, some control flow, and compiler-generated members differ. Treat this as a recovered baseline, not pristine source.

Dependencies

The console references these assemblies. Most are vendored as binaries under lib/ (copied from assets/Tesla Console/):

Assembly Origin
WeifenLuo.WinFormsUI.Docking.dll Third-party docking UI (open source, see assets/Tesla Console/WeifenLuo.txt)
TeslaConsoleLaunchLib.dll Wire types / launch protocol — now built from source (see below)
TeslaSecureConfiguration.dll First-boot secure config protocol — now built from source (see below)
Munga Net.dll Managed C# client for the Red Planet game's Munga protocol (TCP 1501); manual binary serialization, no BinaryFormatter (proprietary, vendored)
BitmapLibrary.dll Plasma-display bitmap rendering (proprietary, vendored)

The Red Planet game itself is C++ and lives in its own repo (c:\vwe\rp411 / gitea.mysticmachines.com/VWE/RP411.git). That source defines the Munga protocol but is not a drop-in for the managed Munga Net.dll above, so it is not vendored here.

Two of these are no longer vendored binaries — they are built from source and shared across the suite:

  • TeslaConsoleLaunchLib../Contract/Tesla.Contract.csproj, a net48 project: the single source of truth for the Console↔Launcher RPC contract (wire types, the PodManagerConnection client, and the framed-JSON PodRpc protocol), shared with the Launcher Service. The assembly keeps the TeslaConsoleLaunchLib name so the original-exe baseline still resolves in the differential tests; the wire no longer embeds assembly names (see RPC note below).
  • TeslaSecureConfiguration../SecureConfig/Tesla.SecureConfig.csproj (net48), the first-boot provisioning protocol (UDP beacons, OFB crypto, RSA key exchange).

The original TeslaSecureConfiguration.dll is retained under lib/ as the baseline for the byte-identical crypto guard (SecureConfigCompatTests). The remaining vendored assemblies (Munga Net, BitmapLibrary) are .NET 2.0 managed and could be decompiled to source the same way if full-source builds are needed.

Console ↔ Launcher RPC (no BinaryFormatter)

The pod-management channel (TCP 53290) runs length-prefixed System.Text.Json frames over the existing OFB-encrypted stream — see Contract/PodRpcProtocol.cs, shared verbatim by both ends. This replaced the original BinaryFormatter + serialized-MethodBase scheme (a remote-code-execution sink, and what had pinned the Launcher to an old runtime); dispatch is now by method-name string. The Launcher Service/Agent target net48, same as the Console. Note the Console still uses BinaryFormatter for local disk persistence (Site config, mission results) — that is local file I/O on net48, not the network surface, and is intentionally left alone.

Layout

This folder is self-contained — it can be lifted out into its own repository and still build and run.

TeslaConsole/
  *.cs, TeslaConsole.*/    decompiled source (by namespace)
  *.resx, app.ico          embedded resources + icon
  TeslaConsole.csproj      net48 project
  RedPlanet/               runtime content (RPConfig.xml, RPStrings.xml) — copied to output
  images/                  source art (pod art / maps / vehicles) — reference only
  installer_banner.bmp     installer artwork — reference only
  lib/                     referenced binaries + WeifenLuo license
  original/                original TeslaConsole.exe + .InstallState — reference baseline

Building

Requirements: .NET SDK (6.0+) — the Microsoft.NETFramework.ReferenceAssemblies NuGet package supplies the net48 reference assemblies, so a standalone Framework targeting pack is not required.

dotnet build TeslaConsole.csproj -c Release

Output: bin/Release/net48/TeslaConsole.exe (with RedPlanet/ and all dependency DLLs copied alongside it).

Runtime content

  • RedPlanet\RPConfig.xml, RedPlanet\RPStrings.xml are loaded relative to the exe and are copied to the build output automatically.
  • Plasma Images\*.bmp (under %ProgramData%) is an optional override set; when absent the console renders plasma-display text procedurally, so it is not required to build or run.

Notes

  • The .resx resources embed BinaryFormatter-serialized bitmaps. The project sets GenerateResourceUsePreserializedResources and references System.Resources.Extensions so these build under the modern SDK.
  • Namespaces: TeslaConsole (UI + pod management), TeslaConsole.RedPlanet (the Red Planet game scenario/mission model), TeslaConsole.Properties (settings + resources).