Native Apple Silicon Counter-Strike 1.6 app bundle for macOS. No Rosetta, no emulation, no Wine at runtime. The game runs as a native arm64 macOS application.
The build process takes a standard Windows CS 1.6 installer and produces a self-contained .app bundle that runs natively on Apple Silicon Macs:
- Extract installer using
innounp.exeunder Wine (Inno Setup 6.5.0 Unicode, which nativeinnoextractcan't handle) - Obtain Xash3D FWGS arm64 runtime (open-source GoldSrc engine reimplementation compiled for macOS arm64)
- Obtain CS16Client arm64 game libraries (community-built native game DLLs)
- Assemble macOS app bundle with proper directory structure:
CounterStrike16.app/
├── Contents/
│ ├── MacOS/ Engine binaries + symlinks to game assets
│ ├── Resources/ Game assets (cstrike/, valve/ data)
│ ├── Frameworks/ SDL2.framework
│ └── Info.plist
The launcher sets XASH3D_BASEDIR to Contents/MacOS and symlinks game asset trees from Contents/Resources, allowing Xash3D to find both engine modules and cstrike data inside the .app structure.
- Inno Setup 6.5.0 Unicode extraction on macOS: Native
innoextractdoesn't support this version. Solution: build a minimal Wine prefix, runinnounp.exethrough Wine to extract, then discard Wine entirely. - App bundle asset resolution: Xash3D expects game data relative to the engine binary. Solved with symlinks from
MacOS/back intoResources/so the engine finds assets while maintaining proper macOS bundle structure. - Framework embedding: SDL2.framework embedded in
Contents/Frameworkswith proper rpaths so the app is fully self-contained.
- macOS 13+ on Apple Silicon (M1/M2/M3/M4)
- A legally obtained CS 1.6 installer
- For building: Wine (via Homebrew), cmake, Xcode CLI tools
# 1. Install build dependencies
brew install wine-stable cmake
# 2. Place your CS 1.6 installer
cp /path/to/cs_16_clean_eng.exe downloads/
# 3. Extract installer payload
mkdir -p extract/installer
wine innounp.exe -x -d./extract/installer downloads/cs_16_clean_eng.exe
# 4. Download Xash3D FWGS arm64 and CS16Client arm64 releases
# (see staging/runtime and staging/cs16client for expected structure)
# 5. Assemble the app bundle
# Copy runtime to build/CounterStrike16.app/Contents/MacOS
# Copy game assets to build/CounterStrike16.app/Contents/Resources
# Embed SDL2.framework in Contents/Frameworks
# Create symlinks from MacOS/ to Resources/ for asset resolution
# 6. Launch
open build/CounterStrike16.app- Game assets are copyrighted and not included in this repository. You need your own copy of CS 1.6.
- This is a packaging/porting project, not a game engine. The engine is Xash3D FWGS and game libraries are from CS16Client.
- No modifications to game logic. This is a native runtime wrapper.
Build scripts and documentation: MIT. Game assets and engine binaries have their own licenses.