Plasma display: send the real clear+home; bump suite to 4.11.4.4

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 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-17 21:03:30 -05:00
co-authored by Claude Fable 5
parent 6973e7d60c
commit 3d186293bf
7 changed files with 23 additions and 10 deletions
+2 -2
View File
@@ -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")]
@@ -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 ----
+15 -2
View File
@@ -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();
}
+1 -1
View File
@@ -18,7 +18,7 @@
<Nullable>disable</Nullable>
<ImplicitUsings>disable</ImplicitUsings>
<LangVersion>latest</LangVersion>
<Version>4.11.4.3</Version>
<Version>4.11.4.4</Version>
<ApplicationIcon>app.ico</ApplicationIcon>
<AssemblyName>TeslaLauncher</AssemblyName>
<RootNamespace>Tesla.Launcher</RootNamespace>
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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.
+2 -2
View File
@@ -27,8 +27,8 @@
<RootNamespace>VPod</RootNamespace>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<!-- Versioned with the suite since v4.11.4.3 (was its own 1.0.0 line). -->
<AssemblyVersion>4.11.4.3</AssemblyVersion>
<Version>4.11.4.3</Version>
<AssemblyVersion>4.11.4.4</AssemblyVersion>
<Version>4.11.4.4</Version>
<Product>vPOD</Product>
</PropertyGroup>