Added
- Launch notification: a one-time Windows toast announces
"LegoToypad is running" and how to open the picker when the app starts. - Single-instance guard: a named mutex prevents launching the app more
than once, so duplicate processes can never fight over the socket,
controller or toy pads. - Multi-resolution app icon:
app.iconow ships real 16/24/32/48/256px
frames (generated with Pillow, single-frame fallback without it), so the
system tray, taskbar and title bar each get a native-size, crisp logo. - Vendor watermark:
by_harrysof.pngis drawn in the top-right of every
screen, vertically centered on the same band as the wordmark (20px inset). - Occupant name labels: selecting a filled pad shows its character/vehicle
name as muted translucent text next to the pad (sides for the upper/center
pads, below the pad row for the flush lower pads).
Changed
- Font: text now renders with
Compacta Regular, embedded as a WOFF2,
decompressed at build time into a GDI/GDI+ consumable OTF and registered
from memory (AddFontMemResourceEx+PrivateFontCollection) — no loose
font file needed next to the exe. - Scroll bars (
Scroll_Bar.png) added to the franchise and roster grid
screens; hidden automatically when the content fits. - Pad highlight: the focused pad gets a pulsing red glow and border, and
the round center pad's highlight is circular to match its art. - Action-bar and panel art are now cached (
RenderScaledAsset): scaled
images are composited once per size instead of rescaled with bicubic
filtering on every frame, cutting per-frame GDI+ work on the pad and
navigation screens. - Faster controller input: navigation moves on D-pad edge presses
(instant) instead of waiting for the hold-repeat timer; the poll interval
was cut to 8ms andtimeBeginPeriod(1)stops Windows from rounding it
back up to ~15.6ms, so quick taps are far less likely to be swallowed. - Focus-free input: controller presses are no longer gated on the overlay
owning foreground focus (Cemu holds it), so whole button presses don't get
dropped anymore. - Persistent back-buffer & UI font are created once and reused across
frames instead of being rebuilt every paint, and the pad animation
repaints at a throttled ~30fps for a cheap idle path.
Fixed
- Swallowed controller presses — "have to press it 4 times": fixed by the
focus-gate removal plus D-pad edge handling for quick taps. - Franchise focus highlight corner radius now matches the tiles (12px).
- Hidden occupant names on the lower-left pad row are now drawn in an
unobstructed spot, below the pads, instead of behind the neighboring tile.
[1.1.0]
Added
- Controller-driven franchise/character/vehicle browser (PadViewer,
FranchiseList, RosterList, PlusPicker, PadAction, Settings screens). - Glossy rounded-rect pads with per-slot background art and glowing focus halo.
- Embedded asset pipeline (
generate_assets.py): every tag, portrait, logo
and piece of UI art compiled into the exe as Win32 resources. - Cemu
LOADmessage sender over UDP with the local Toypad listener. - Controller shortcuts (configurable combos, keyboard alternatives),
tray icon + menu, and an always-on-top translucent overlay. LegoToypad.iniport configuration (9191default).