From 3d186293bfd44077b263ec4c6f1e57e33b741c2d Mon Sep 17 00:00:00 2001 From: Cyd Date: Fri, 17 Jul 2026 21:03:30 -0500 Subject: [PATCH] Plasma display: send the real clear+home; bump suite to 4.11.4.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The provisioning text on the pod's plasma panel came up garbled — stale content bleeding through, new text overlapping at the wrong position. Root cause recovered from the dumped PD01D221 controller firmware (vrio/PlasmaNew): PlasmaWriter.ClearAll() sent ESC J, which on this controller is NOT a clear — it toggles an orientation/mode bit — so the panel never cleared and the cursor never homed. Fix: ClearAll() now sends the real commands ESC @ (clear active buffer, reset text state) + ESC L (home to 0,0), and the writer hides the cursor once at open with ESC G 0 — exactly what the game and the ROM's own demo do. Verified by running the launcher's actual byte streams through the firmware-modeled vPLASMA emulator: the old ESC J path left stale pixels (732 lit vs 404); the new path renders byte-identical to a freshly cleared panel (404 lit, cursor hidden). Version bumped 4.11.4.3 -> 4.11.4.4 across Launcher, Console, vPOD, the install/build banners, and the diff-suite version assertion. This cuts a clean release boundary that also carries the earlier field fixes (process-tree kill on Stop, Win10 install.bat icacls quoting, real system volume + pre-uninstall opt-in, and the volume menu check-mark fix). Co-Authored-By: Claude Fable 5 --- Console/Properties/AssemblyInfo.cs | 4 ++-- .../BehavioralEquivalenceTests.cs | 2 +- Launcher/SecureConfig.cs | 17 +++++++++++++++-- Launcher/TeslaLauncher.csproj | 2 +- Launcher/build.bat | 2 +- Launcher/install.bat | 2 +- vPOD/vPOD.csproj | 4 ++-- 7 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Console/Properties/AssemblyInfo.cs b/Console/Properties/AssemblyInfo.cs index 8e03b6d..3afa266 100644 --- a/Console/Properties/AssemblyInfo.cs +++ b/Console/Properties/AssemblyInfo.cs @@ -8,9 +8,9 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("Copyright © 2009")] [assembly: AssemblyConfiguration("")] [assembly: Guid("581ca4b6-a91c-4d24-b9b5-207f3b5da379")] -[assembly: AssemblyFileVersion("4.11.4.3")] +[assembly: AssemblyFileVersion("4.11.4.4")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: AssemblyTitle("Tesla Console")] [assembly: AssemblyDescription("All code and UI property of Virtual World Entertainment.\r\n\r\nDeveloped by Elsewhen Studios, LLC in association with VGCorps, LLC.\r\n\r\nElsewhen Studios and the Elsewhen Wormhole are trademarks of Elsewhen Studios, LLC\r\n\r\nIncludes the WeifenLuo DockingPane library. Copyright © 2007 Weifen Luo (email: weifenluo@yahoo.com). Licensed under the MIT License - details can be found in WeifenLuo.txt included in this installation.")] -[assembly: AssemblyVersion("4.11.4.3")] +[assembly: AssemblyVersion("4.11.4.4")] diff --git a/Console/tests/TeslaConsole.DiffTests/BehavioralEquivalenceTests.cs b/Console/tests/TeslaConsole.DiffTests/BehavioralEquivalenceTests.cs index 68031df..7ff7bb5 100644 --- a/Console/tests/TeslaConsole.DiffTests/BehavioralEquivalenceTests.cs +++ b/Console/tests/TeslaConsole.DiffTests/BehavioralEquivalenceTests.cs @@ -47,7 +47,7 @@ namespace TeslaConsole.DiffTests Assert.Contains("TeslaConsole", _fx.Original.AssemblyFullName); Assert.Contains("TeslaConsole", _fx.Recovered.AssemblyFullName); Assert.Contains("4.11.3.37076", _fx.Original.AssemblyFullName); - Assert.Contains("4.11.4.3", _fx.Recovered.AssemblyFullName); + Assert.Contains("4.11.4.4", _fx.Recovered.AssemblyFullName); } // ---- RPStrings.GetTimeString: mm:ss formatting with 0.5s rounding ---- diff --git a/Launcher/SecureConfig.cs b/Launcher/SecureConfig.cs index 0cd8dfc..3468709 100644 --- a/Launcher/SecureConfig.cs +++ b/Launcher/SecureConfig.cs @@ -156,6 +156,12 @@ namespace TeslaSecureConfig _port = new System.IO.Ports.SerialPort(comPort, baud, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One); _port.Open(); + // Hide the text cursor once at startup, exactly as the game and the + // controller's own ROM demo do (ESC G 0). ESC @ does not restore it, + // so a single hide holds for the session. + _port.BaseStream.WriteByte(0x1B); // ESC + _port.BaseStream.WriteByte(0x47); // G + _port.BaseStream.WriteByte(0x00); // 0 -> cursor hidden ClearAll(); } catch (Exception ex) @@ -166,12 +172,19 @@ namespace TeslaSecureConfig } } - // ClearAll: send ESC J (clear display) as per Plasma protocol + // Clear + home, per the PD01D221 controller's recovered command set (EPROM + // dump -> vrio/PlasmaNew/FIRMWARE.md; the ROM's own demo prefixes every + // screen with exactly these two). The previous code sent ESC J, which on + // this controller is NOT a clear -- it toggles an orientation/mode bit -- so + // the panel never cleared and never homed, and each provisioning cycle wrote + // stale text at a stale cursor position (garbled overlap in the field). public void ClearAll() { if (_port == null || !_port.IsOpen) return; _port.BaseStream.WriteByte(0x1B); // ESC - _port.BaseStream.WriteByte(0x4A); // J (clear screen) + _port.BaseStream.WriteByte(0x40); // @ -> clear active buffer, reset text state + _port.BaseStream.WriteByte(0x1B); // ESC + _port.BaseStream.WriteByte(0x4C); // L -> home cursor to (0,0) _port.BaseStream.Flush(); } diff --git a/Launcher/TeslaLauncher.csproj b/Launcher/TeslaLauncher.csproj index 75d9eaf..bfd8e29 100644 --- a/Launcher/TeslaLauncher.csproj +++ b/Launcher/TeslaLauncher.csproj @@ -18,7 +18,7 @@ disable disable latest - 4.11.4.3 + 4.11.4.4 app.ico TeslaLauncher Tesla.Launcher diff --git a/Launcher/build.bat b/Launcher/build.bat index 5410b98..c8b25ac 100644 --- a/Launcher/build.bat +++ b/Launcher/build.bat @@ -46,7 +46,7 @@ for %%a in (%*) do ( echo. echo ============================================================ -echo Tesla Launcher v4.11.4.3 - Build ^& Package (net40 single binary) +echo Tesla Launcher v4.11.4.4 - Build ^& Package (net40 single binary) echo Output : %BUILD_DIR% echo ============================================================ echo. diff --git a/Launcher/install.bat b/Launcher/install.bat index 42f7d4e..d4fc639 100644 --- a/Launcher/install.bat +++ b/Launcher/install.bat @@ -20,7 +20,7 @@ setlocal enabledelayedexpansion echo ============================================================ -echo Tesla Launcher v4.11.4.3 - Installation (single binary) +echo Tesla Launcher v4.11.4.4 - Installation (single binary) echo ============================================================ echo. diff --git a/vPOD/vPOD.csproj b/vPOD/vPOD.csproj index 22288d1..f14d0bd 100644 --- a/vPOD/vPOD.csproj +++ b/vPOD/vPOD.csproj @@ -27,8 +27,8 @@ VPod true - 4.11.4.3 - 4.11.4.3 + 4.11.4.4 + 4.11.4.4 vPOD