# 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](https://github.com/icsharpcode/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` (net40, like the whole suite since XP11): 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. 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` (net40), 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 JSON** frames over the existing OFB-encrypted stream — see `Contract/PodRpcProtocol.cs`, shared verbatim by both ends (Newtonsoft.Json — net40 has no System.Text.Json). 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 and the Console both target **net40** (XP11: XP SP3 through Windows 11). Note the Console still uses `BinaryFormatter` for *local* disk persistence (`Site` config, mission results) — that is local file I/O, 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 string resources + icon assets/icons/ UI images (raw originals, embedded as manifest resources — the resx BinaryFormatter blobs cannot build for net40) TeslaConsole.csproj net40 project (XP11: runs on XP SP3 through Windows 11) 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 net40 reference assemblies, so a standalone Framework targeting pack is **not** required. ``` dotnet build TeslaConsole.csproj -c Release ``` Output: `bin/Release/net40/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).