Panel: the vRIO layout + coloration, plasma flip fix, button-trap guard
Per Cyd: the on-screen panel now mirrors vRIO (C:\VWE\vrio -- CockpitLayout.cs
+ PanelCanvas.cs, itself the RIOJoy profile-editor layout from the original
Win32 RIO mockup): five 4x2 MFD clusters (addresses descending), four 1x8
board columns (Throttle/Secondary/Screen/Joystick), the two 4x4 hex keypads
(0x50/0x60 -- cells emit real keypad KeyEvents: internal=pilot unit, external=
operator unit), physical names (Panic/Main/Hat*/Pinky...), vRIO colors: red
lamp cells + yellow Secondary/Screen + neutral-blue keypads, flash half-
periods 500/250/125ms, right-click latch (gold outline). 104 controls.
PlasmaWindow: the gauge renderer writes the 128x32 buffer TOP-DOWN -- the
bottom-up flip rendered the marquee upside down (user-reported); copy straight.
Button-trap guard (the e2c21c4 pattern): the authentic base
ConfigureMappableMessageHandler FAIL trap is abort() under DEBUGOFF -- any
aux/zoom button without its L4 override reconstructed KILLED the game on
press. Default now: loud [FAIL] log + ignore; BT_BUTTON_TRAP=1 restores the
hard trap. Verified live: synthetic click on a Secondary cell -> 2 [FAIL]
lines (press+release through panel->PadRIO->ProcessRIOEvent->streamed
mapping), game survives and keeps ticking.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -113,13 +113,13 @@ Logical
|
||||
//
|
||||
// 8-bit index -> BGRA: any lit index renders plasma orange, intensity
|
||||
// stepped a little by index so shaded glyphs keep their shape. The
|
||||
// engine's graphics coordinate system puts (0,0) bottom-left; the
|
||||
// window is top-down, so flip Y in the copy.
|
||||
// gauge renderer writes the buffer TOP-DOWN (user-verified 2026-07-17:
|
||||
// a bottom-up flip rendered the marquee upside down) -- copy straight.
|
||||
//
|
||||
const Byte *source = pixelBuffer->Data.MapPointer;
|
||||
for (int y = 0; y < plasmaHeight; ++y)
|
||||
{
|
||||
const Byte *line = source + (plasmaHeight - 1 - y) * plasmaWidth;
|
||||
const Byte *line = source + y * plasmaWidth;
|
||||
unsigned long *destination = blitBuffer + y * plasmaWidth;
|
||||
for (int x = 0; x < plasmaWidth; ++x)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user