Skip to content

Releases: vakesz/TrackMania-MacOS

0.3.0

Choose a tag to compare

@vakesz vakesz released this 08 Sep 20:05

Changes since 0.2.0.

Session supervisor

The shell watchdog is replaced by a Windows-side supervisor,
libexec/mactmnf-session.exe, that runs inside the prefix. It tracks the
game and settings executables by retained process handles and exact file
identity rather than by scanning process names.

  • Normal quits are quiet. Failed or uncertain sessions show an alert with the
    log location. An uncertain result never kills a game that may still be
    running.
  • make stop is the explicit way to stop the selected prefix.
  • Without MACTMNF_WINDOW_SIZE, Wine's own explorer.exe /desktop is
    recognized only as the runtime's exact image and closed after the game exits.
    With it, each session gets its own virtual desktop; each dimension must be
    between 1 and 65535.

Renderer

  • D9VK is updated to a newer pinned upstream, which drops the two local build
    patches. Two fixes are added: promoted 16-bit volume textures no longer
    overwrite earlier slices, and texm3x3vspec keeps the eye-vector magnitude.
  • Wine's texm3x3 lowering likewise preserves the eye vector.
  • config/dxvk.conf no longer forces presentInterval = 0, so the game's own
    vsync setting applies. The direct buffer mapping override is dropped because
    the pinned D9VK already defaults to it.

Network

WinHTTP now preserves certificate rejection reasons and reports secure-failure
callbacks instead of a generic channel error, and no longer reuses a pooled
connection under a different validation policy. Rejection of untrusted,
expired and hostname-mismatched certificates is unchanged; only the reporting
is corrected. A local TLS fixture suite covers both architectures and both
sync and async modes.

x87 precision

x87sidecar honors PC24 and PC53 arithmetic and rounds float stores with the
guest rounding mode inside a scoped FPCR. Host FPCR is restored exactly and
sticky FPSR flags are retained. Results are bit-exact against the reference
cases. PC64 remains an f64 approximation; full 80-bit state is not provided.

Launcher and installer

  • Prefix-changing commands and launches take an installation lock and refuse
    an already-active selected prefix. External Wine invocations do not
    participate.
  • uninstall verifies that user data lives outside the prefix before removing
    anything.
  • App logs rotate at 2 MiB before launch, keeping three numbered backups.
  • Malformed or unsupported game icons fall back to generic app artwork instead
    of blocking installation.
  • The SystemConfig generator validates field types and preset ranges.
  • make doctor reports a missing, modified or mismatched runtime explicitly.
  • make build uses every CPU core by default; MACTMNF_JOBS=4 leaves some
    free.

Multimedia timer and waits

The winmm multimedia timer keeps its own lock, isolated from other winmm state.
The Darwin fast alertable-yield path tracks both user and system APC queues,
including cancellation, and falls back to the server path on pipe EOF.

Install

make install downloads mactmnf-0.3.0-runtime.tar.xz from this release,
verifies its SHA-256, installs the game, and creates the two apps. See the
README for the full steps and for building the runtime yourself.

If macOS blocks a manually downloaded archive, clear its quarantine flag:

xattr -dr com.apple.quarantine "$HOME/Downloads/mactmnf-0.3.0-runtime.tar.xz"

Notes

  • Requires an Apple Silicon Mac and macOS 14 or later. Rosetta 2 is installed
    automatically if missing.
  • Binaries are ad-hoc signed, not Developer ID signed or notarized. SHA-256
    verifies integrity, not a publisher identity.
  • The game and Microsoft DirectX are downloaded from their original hosts during
    installation, not redistributed here.
  • Async shader compilation can briefly skip draws whose pipelines are not ready.
    The remaining renderer tuning flags await controlled frame-time comparisons.

Files

  • mactmnf-0.3.0-runtime.tar.xz and .sha256: the runtime the installer uses.
  • mactmnf-0.3.0-source.tar.xz and .sha256: the pinned upstream sources and
    patches this runtime is built from.

0.2.0

Choose a tag to compare

@vakesz vakesz released this 06 Sep 10:07

Changes since 0.1.0.

Display and fullscreen

The game now launches directly instead of being forced into a 1280x720 Wine
virtual desktop, so it uses the display mode set in TrackMania Settings
(fullscreen or windowed, at the resolution you choose). The old forced desktop
added a title bar that shortened the drawable and clipped the bottom of the
game's fixed-size menu, so clicks there did not register.

  • Fullscreen uses the primary display. With more than one monitor, set the
    game's resolution to the primary's so it fills the screen.
  • To force a fixed windowed size, set MACTMNF_WINDOW_SIZE=1280x720 (any WxH).

Clean exit

Quitting the game no longer leaves a black Wine window behind, and the app no
longer shows a false "TrackMania could not start" alert on a normal quit. The
launcher waits for the game process to exit, then stops the prefix.

One Dock icon

The launcher no longer adds its own Dock icon; only the game's tile shows.

Microphone

macOS should ask for microphone access less often. Wine's CoreAudio driver now
refuses to open a capture (input) audio unit, since TrackMania only plays sound.
This is a mitigation, not a guarantee: the prompt can still appear, and denying
it is safe.

Install

make install downloads mactmnf-0.2.0-runtime.tar.xz from this release,
verifies its SHA-256, installs the game, and creates the two apps. See the
README for the full steps and for building the runtime yourself.

If macOS blocks a manually downloaded archive, clear its quarantine flag:

xattr -dr com.apple.quarantine "$HOME/Downloads/mactmnf-0.2.0-runtime.tar.xz"

Notes

  • Requires an Apple Silicon Mac and macOS 14 or later. Rosetta 2 is installed
    automatically if missing.
  • Binaries are ad-hoc signed, not Developer ID signed or notarized. SHA-256
    verifies integrity, not a publisher identity.
  • The game and Microsoft DirectX are downloaded from their original hosts during
    installation, not redistributed here.

Files

  • mactmnf-0.2.0-runtime.tar.xz and .sha256: the runtime the installer uses.
  • mactmnf-0.2.0-source.tar.xz and .sha256: the pinned upstream sources and
    patches this runtime is built from.

0.1.0

Choose a tag to compare

@vakesz vakesz released this 06 Sep 08:10

TrackMania Nations Forever on Apple Silicon, with Competition Patch, working
textures and audio, and a patched Wine + D9VK runtime tuned for this game. This
is the first release.

Install

Download this repository, open Terminal in its folder, and run:

make install

The installer downloads mactmnf-0.1.0-runtime.tar.xz from this release,
verifies its SHA-256, installs the game, and creates the TrackMania Nations
Forever
and TrackMania Settings apps. See the README for the full steps
and for building the runtime yourself instead.

If macOS blocks a manually downloaded archive, clear its quarantine flag:

xattr -dr com.apple.quarantine "$HOME/Downloads/mactmnf-0.1.0-runtime.tar.xz"

What's inside

  • A patched Wine 11.x with D9VK (DXVK for Direct3D 9) on MoltenVK.
  • An x87 translator that keeps the game's 24-bit floating-point math intact
    under Rosetta.
  • Fixes for the game's shader materials, startup, audio, the settings launcher,
    and clean shutdown. The game no longer prompts for microphone or Desktop
    access it does not use.

Notes

  • Requires an Apple Silicon Mac and macOS 14 or later. Rosetta 2 is installed
    automatically if missing.
  • The binaries are ad-hoc signed, not Developer ID signed or notarized. SHA-256
    verifies integrity, not a publisher identity.
  • The game and Microsoft DirectX are downloaded from their original hosts during
    installation, not redistributed here.

Files

  • mactmnf-0.1.0-runtime.tar.xz and .sha256: the runtime the installer uses.
  • mactmnf-0.1.0-source.tar.xz and .sha256: the pinned upstream sources and
    patches this runtime is built from.

See the README acknowledgements for the projects this is built on.