Skip to content

Lego Toypad Version 1.1

Latest

Choose a tag to compare

@harrysof harrysof released this 15 Aug 06:49
· 7 commits to main since this release

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.ico now 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.png is 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 and timeBeginPeriod(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 LOAD message 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.ini port configuration (9191 default).