Skip to content

1.0.9 – DirectX 12, performance optimization, bug fixes and much more

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:22
6144eb6

Take match day further with Mario Strikers Charged 1.0.9: play at high or uncapped frame rates, put an end to the NK/Boo glitch that let shots pass through goalies, and fix the video-memory growth behind 1.0.8's out-of-memory crashes. Choose Vulkan or DirectX 12 on Windows, prepare graphics before kickoff, and get faster loading and audio, Steam Deck support, and clearer diagnostics.

Version 1.0.9 fixes the NK/Boo collision bug and the video-memory growth behind 1.0.8's out-of-memory crash, adds selectable Windows graphics APIs, prepares the game's graphics before it starts, and improves loading and audio performance, diagnostics and Steam Deck support.

Gameplay

  • NK (No Kritter) bug / Boo glitch (#38): losing the ball while intangible no longer leaves shots passing through both goalies, including when a landing Chain Chomp knocks it away from a deking carrier. Releasing the ball restores its collision flags, and a goalie no longer takes it from an intangible teammate. This fix is always on; --no-tweaks keeps it. Retail teleport/deke mechanics remain intact.

  • Fast menus (#39): the optional tweak now skips pause-menu transitions too.

  • Fast terrain (#43): a new optional tweak gives every stadium the dry terrain of Bowser Stadium and leaves out the Sand Tomb's sand patches. Online matches, the stadiums' looks, hazards, tilt and wind, and Petey's muck holes are unchanged.

  • High and uncapped frame rates (#45): the new Display → Frame rate option (display.frame_rate, run override --frame-rate) offers original (default, 60 FPS like the Wii), display, unlimited or a fixed 30–1000. Matches keep their fixed 50 Hz simulation and draw every frame from blended snapshots, so game speed stays the same. The video interface stays at its real rate, so movies, dimming and the HOME menu are unaffected. Hosts that cannot keep 60 FPS also stop dropping menu frames to 30. Known: pointer input is polled at 100 Hz.

Windows, loading and packaging

  • Vulkan and DirectX 12 (#32): choose either API in the Windows launcher's Advanced page. A failed selection reports an error without silently switching APIs. The ZIP includes the required shader compiler and runtime DLLs.
  • Loading performance (#36): resident file reads, including medium resident texture reads, avoid worker handoffs; memory ownership searches during loading are bounded.
  • Wii Remote freezes (#46): with a Wii Remote connected over Bluetooth, the game no longer freezes for a moment every few seconds. It looks for newly connected controllers only when a device is connected or removed, instead of every 2 seconds.
  • Steam Deck: add a dedicated packaged build and start fullscreen in Steam Game Mode.
  • CI (#47): the Intel macOS package is cross-compiled on the Apple Silicon runner instead of taking over an hour on an Intel one, and CI fetches dependencies at their pinned commits only, which speeds up every platform.
  • Limit the sane new/delete compiler opt-out to GCC 15 and newer.

Memory and audio performance

  • Video memory: textures the game stops using are released after 600 unused frames. Before, every texture stayed in GPU memory: the credits movie alone added about 1.7 GB, and a 1.0.8 Windows session ran out of video memory after 19 minutes. A render target the game destroys also releases its copies, which each match's crowd and captain impostors left behind.
  • Audio: each audio frame (about 333 a second) builds its 96 voices in place, reuses their storage, leaves stopped voices' signals alone, validates once and converts parameter blocks field by field instead of byte by byte. DSP memory coherence is checked once per address-map change instead of on every transfer. These were the largest main-thread costs in a match.
  • The port's own code in the game modules (ownership registry, data transports, audio devices) builds at -O2; the original game sources keep -O1.

Graphics preparation and diagnostics

  • Prepared before the game starts: Preparing graphics compiles the game's drawing and effect pipelines on several processor cores before the boot screens. It covers a bundled list recorded from scripted runs through all 17 stadiums and 12 captains, the Striker Challenges and the Strikers 101 lessons (240 configurations), and any others the game has used on this PC. The first launch compiles them once; later launches load them from the cache. Nothing is prepared or held once the game runs.
  • Fewer pipelines: the fog type and the vertex data's byte order are now chosen per draw instead of being part of each pipeline, so one recorded configuration covers an effect under every stadium's fog. The bundled list shrinks from 534 configurations plus 340 fog variants to 239, with identical pixels.
  • Stutters in mscharged.log: a pipeline missing from both still compiles the first time it is drawn, which causes a brief stutter, and is prepared from the next launch on. Pipelines that one frame needs together now compile in parallel instead of one after another; the frame waits for them only when it is drawn. logs/mscharged.log records each one (Graphics: new pipeline compiled while drawing in … ms) with its configuration, so testers' logs can complete the bundled list (tools/pipeline_catalog.py --import mscharged.log). Please attach the log when an effect stutters the first time it appears.
  • Preparation screen: a label and percentage over a thin bar on black, which fades in only when preparation takes longer than 0.3 s. The original boot "Loading" bitmap no longer flashes up after it.
  • Each graphics API keeps its compiled pipelines across launches and API switches; GPU, driver or renderer changes can require compiling them again.
  • Replace the title-bar FPS counter with an optional on-screen FPS | GPU | CPU | LAT overlay. CPU/GPU show total system usage; unavailable counters and unimplemented network latency show N/A.
  • Group Frame logging, recordings-folder access, Clear shader cache, API validation and console logging under Advanced → Diagnostics & analytics. Frame logging defaults off and writes a fresh CSV plus summary beside the executable. The old environment variable no longer controls it. Cache clearing preserves saves, settings and recordings and refuses to run while the game uses the cache.
  • Add an All tweaks control to the launcher's Gameplay page.