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 stopis the explicit way to stop the selected prefix.- Without
MACTMNF_WINDOW_SIZE, Wine's ownexplorer.exe /desktopis
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, andtexm3x3vspeckeeps the eye-vector magnitude. - Wine's
texm3x3lowering likewise preserves the eye vector. config/dxvk.confno longer forcespresentInterval = 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. uninstallverifies 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 doctorreports a missing, modified or mismatched runtime explicitly.make builduses every CPU core by default;MACTMNF_JOBS=4leaves 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.xzand.sha256: the runtime the installer uses.mactmnf-0.3.0-source.tar.xzand.sha256: the pinned upstream sources and
patches this runtime is built from.