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
+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();
}