Repository navigation
installation
Endfield_FineWine enables running Arknights: Endfield on Apple Silicon Macs through a custom-patched CrossOver Wine. This project provides patches to CrossOver's Wine, plus scripts and documentation to build and deploy them.
⚠️ Important Disclaimer: These patches are provided as-is. While they allow Endfield's anti-cheat to operate on macOS like it does on Windows, you assume all risks associated with using this tool. Running the game in an unsupported configuration may violate its Terms of Service.
- System Requirements
- Installation Methods
- Method 1: Using the FineWine Patcher.app (Recommended)
- Method 2: Manual Build and Installation
- Post-Installation Setup
- Verification Steps
- Troubleshooting
- Related Documentation
| Component | Requirement | Notes |
|---|---|---|
| Mac | Apple Silicon (M-series) | Intel Macs are NOT supported |
| CPU | M1 Pro/Max/Ultra, M2 Pro/Max/Ultra, M3 Pro/Max, M4 Pro/Max recommended | MacBook Air (any chip) is NOT recommended — no active cooling |
| RAM | 24 GB+ recommended | 16 GB works but is memory-constrained (see Performance on 16 GB Macs) |
| Storage | ~15 GB free space | ~5 GB for build tree + game installation |
| Software | Version | Installation |
|---|---|---|
| macOS | 15 (Sequoia) or newer | Tested on macOS 27.0 and 26.5 |
| Rosetta 2 | Required | softwareupdate --install-rosetta --agree-to-license |
| CrossOver | 26.3 (licensed) | From codeweavers.com |
| Xcode Command Line Tools | Latest | xcode-select --install |
| Homebrew | Latest (Apple Silicon) |
brew.sh — installs to /opt/homebrew
|
| Game | Licensed Arknights: Endfield | Installed via Gryphline launcher |
| Mac Tier | Settings | Expected FPS |
|---|---|---|
| M4 Pro / M3 Pro / M4 Max (24 GB+) | Medium, 100% render scale | ~60 FPS |
| Base M1/M2/M3/M4 (16 GB) | Low / Very Low | 30–45 FPS |
| MacBook Air (any chip) | ❌ Not recommended | — |
⚠️ Thermal Warning: Expect ~90°C thermals and fully maxed CPU on any Mac. Performance is CPU + RAM bound, not GPU. Actively cooled Macs (MacBook Pro, Mac Studio, Mac mini) required.
This project offers two installation approaches:
| Method | Difficulty | Time | Best For |
|---|---|---|---|
| FineWine Patcher.app | Easy | 5–10 min | Most users; no developer tools needed |
| Manual Build | Advanced | 20–60 min | Developers; auditing; customization |
The FineWine Patcher.app is a GUI tool that automates the entire process: it copies CrossOver, applies the patched Wine modules, optionally installs Apple's GPTK4/D3DMetal, re-seals the bundle, and creates the game bottle.
- Go to the Releases page
- Download the latest
FineWine Patcher.app.zip - Unzip and place
FineWine Patcher.appin your/Applicationsfolder
- Install CrossOver 26.3 from codeweavers.com (licensed copy required)
- Optional: Download GPTK4 for best performance:
- Go to Apple Developer Downloads
- Sign in with Apple ID (free Apple Developer account works)
- Download "Evaluation environment for Windows games 4.x" DMG
- Mount the DMG (it will appear under
/Volumes/)
- Launch FineWine Patcher.app from
/Applications - The app will detect your CrossOver 26.3 installation
- Optional: If you mounted the GPTK4 DMG, click "Install GPTK4 / D3DMetal" and select the mounted volume
- Click "Patch CrossOver" — this creates
/Applications/CrossOver_Endfield_Patch.app - Click "Create Bottle" — creates the "Arknights Endfield" bottle with optimal settings
- Click "Install Game" — launches CrossOver to install the Gryphline launcher
- In the opened CrossOver_Endfield_Patch window, select the Arknights Endfield bottle
- Click Install Application → choose the downloaded Gryphline launcher (
GRYPHLINK_<version>.exe) - Keep default install location, log in, and let the launcher download the game
- Open CrossOver_Endfield_Patch.app (NOT the stock CrossOver.app)
- Select the Arknights Endfield bottle
- Double-click GRYPHLINK
- In the launcher: click the dropdown next to Start → "Launch with DirectX 11"
Critical: Always use "Launch with DirectX 11" (passes
-force-d3d11). The plain Start button uses Vulkan/DX12 which don't work well.
For developers or those who want full control/auditability.
git clone https://github.com/stoicswe/Endfield_FineWine.git
cd Endfield_FineWine
```bash
### Step 2: Install Build Dependencies
```bash
# Install Homebrew dependencies
brew install bison mingw-w64 meson pkg-config git make flex
# Ensure bison 3.0+ is first in PATH (macOS ships 2.3)
echo 'export PATH="/opt/homebrew/opt/bison/bin:$PATH"' >> ~/.zprofile
source ~/.zprofile
# Verify
which bison # Should be /opt/homebrew/opt/bison/bin/bison
bison --version # Should be 3.8+
```bash
### Step 3: Build the Patched Wine
**One-shot build (recommended):**
```bash
./scripts/build-wine.sh all
```bash
This runs all stages (~20–60 minutes on M4 Pro):
1. `deps` — Install Homebrew dependencies
2. `fetch` — Download CrossOver 26.3 Wine source (~142 MB)
3. `apply` — Apply all 24 patches (verified clean)
4. `configure` — Configure 64-bit-only build under `arch -x86_64`
5. `build` — Compile with `make -j`
**Step-by-step (for debugging):**
```bash
./scripts/build-wine.sh deps # Install dependencies
./scripts/build-wine.sh fetch # Download Wine source
./scripts/build-wine.sh apply # Apply patches
./scripts/build-wine.sh configure # Configure build
./scripts/build-wine.sh build # Compile
```bash
> **Note**: This builds a **minimal 64-bit-only Wine** (no bundled fonts/TLS/graphics libs). We only swap 3 core modules into CrossOver, which provides everything else.
### Step 4: Deploy into CrossOver
**Scripted (recommended):**
```bash
./scripts/swap-into-crossover.sh
```bash
**With GPTK4 (optional):**
```bash
# Mount GPTK4 DMG first, then:
GPTK_DIR="/Volumes/<GPTK volume>/redist/lib/external" ./scripts/swap-into-crossover.sh
```bash
This script:
1. Copies `/Applications/CrossOver.app` to a staging area
2. Swaps 3 patched modules:
- `lib/wine/x86_64-unix/ntdll.so` (Rosetta fixes + QPC timing)
- `lib/wine/x86_64-windows/kernel32.dll` (KiUser*Dispatcher int3 spoof)
- `lib/wine/x86_64-windows/ntoskrnl.exe` (17 kernel backports)
3. Adds `@loader_path/../../../lib64` rpath to `ntdll.so`
4. Re-seals the bundle with ad-hoc signature
5. Moves to `/Applications/CrossOver_Endfield_Patch.app`
**Manual deployment (for auditing):**
```bash
APP="/Applications/CrossOver_Endfield_Patch.app"
ditto --noextattr --noqtn /Applications/CrossOver.app "$APP"
CXR="$APP/Contents/SharedSupport/CrossOver"
B="$PWD/build/wine-build64"
# Backup and swap modules
for f in x86_64-unix/ntdll.so x86_64-windows/kernel32.dll x86_64-windows/ntoskrnl.exe; do
mv "$CXR/lib/wine/$f" "$CXR/lib/wine/$f.cxorig"
done
cp "$B/dlls/ntdll/ntdll.so" "$CXR/lib/wine/x86_64-unix/ntdll.so"
cp "$B/dlls/kernel32/x86_64-windows/kernel32.dll" "$CXR/lib/wine/x86_64-windows/kernel32.dll"
cp "$B/dlls/ntoskrnl.exe/x86_64-windows/ntoskrnl.exe" "$CXR/lib/wine/x86_64-windows/ntoskrnl.exe"
# Fix ntdll.so rpath for D3DMetal
install_name_tool -add_rpath "@loader_path/../../../lib64" "$CXR/lib/wine/x86_64-unix/ntdll.so"
codesign --force --sign - "$CXR/lib/wine/x86_64-unix/ntdll.so"
# Re-seal outer bundle
xattr -drs com.apple.quarantine "$APP"
xattr -rd com.apple.FinderInfo "$APP"
codesign --force --sign - --preserve-metadata=entitlements "$APP"
codesign --verify --deep --strict "$APP" && echo "✅ Patched app verifies"
```bash
### Step 5: Create the Bottle
```bash
./scripts/create-bottle.sh
```bash
This creates a bottle named **"Arknights Endfield"** with:
- Windows 11 64-bit
- Graphics: D3DMetal
- DLSS (MetalFX): Enabled
- MSync: Enabled
**To update an existing bottle:**
```bash
UPDATE=1 ./scripts/create-bottle.sh
```bash
### Step 6: Install the Game
```bash
# Download Gryphline launcher from https://endfield.gryphline.com
# Then install via CrossOver GUI or command line:
CXR="/Applications/CrossOver_Endfield_Patch.app/Contents/SharedSupport/CrossOver"
"$CXR/bin/wine" --bottle "Arknights Endfield" --wait-children ~/Downloads/GRYPHLINK_<version>.exe
```javascript
Keep default install location, log in, and let the launcher download the game.
### Step 7: Launch the Game
**Using the launch script (handles cleanup, args, logging):**
```bash
# Standard launch (DirectX 11)
./scripts/launch-endfield.sh
# With debug logging
DEBUG=light ./scripts/launch-endfield.sh # Wine errors only
DEBUG=1 ./scripts/launch-endfield.sh # Full CrossOver log (heavy)
# Experimental Vulkan (requires patched MoltenVK)
GFXARGS=-force-vulkan ./scripts/launch-endfield.sh
```bash
**Direct wine invocation:**
```bash
CXR="/Applications/CrossOver_Endfield_Patch.app/Contents/SharedSupport/CrossOver"
"$CXR/bin/wine" --bottle "Arknights Endfield" \
--cx-app "C:/Program Files/GRYPHLINK/games/Arknights Endfield/Endfield.exe" -force-d3d11
```bash
**Or via GUI:** Open `CrossOver_Endfield_Patch.app` → select bottle → run GRYPHLINK → "Launch with DirectX 11"
---
## Post-Installation Setup
### Graphics Configuration
The bottle is pre-configured with optimal settings. To verify or change:
1. Open `CrossOver_Endfield_Patch.app`
2. Select **Arknights Endfield** bottle
3. Click **Advanced Settings** → **Graphics**
4. Ensure:
- **Graphics Backend**: D3DMetal (recommended) or DXMT
- **DLSS (MetalFX)**: ON
- **MSync**: ON
- **High Resolution Mode**: OFF (causes white screen)
### Game Renderer Setting
**Critical**: Endfield must run in **DirectX 11** mode.
- **Via Launcher**: Dropdown next to Start → "Launch with DirectX 11"
- **Via Command Line**: Add `-force-d3d11` (handled by `launch-endfield.sh`)
- **Game updates may reset this** — re-select DirectX 11 if white screen returns
### Optional: Mod Support (EFMI/XXMI)
Experimental mod chain support is available. See [Mod Injection Research](mod-injection/README.md) and [Patcher Integration Plan](mod-injection/08-patcher-integration-plan.md).
```bash
# Enable mod chain (after EFMI installed in bottle)
MOD_CHAIN=1 ./scripts/swap-into-crossover.sh
```bash
---
## Verification Steps
### 1. Verify Patched App Signature
```bash
codesign --verify --deep --strict /Applications/CrossOver_Endfield_Patch.app
# Should output: "valid on disk" and "satisfies its Designated Requirement"
```bash
### 2. Verify Patched Modules Load
```bash
# Launch with debug logging
DEBUG=light ./scripts/launch-endfield.sh
# Check log for:
# - "set_graphics_backend using d3dmetal as the graphics backend"
# - No "error loading cxcompatdb.so" messages
# - Game reaches login screen
```javascript
### 3. Verify Anti-Cheat Passes
In the debug log, confirm:
- `ACE-Base64.dll`, `ACE-Service64.exe`, `ACE-BASE.sys` load without "driver error 13"
- No `unimplemented function ntoskrnl.exe.*` aborts
### 4. Verify Graphics Backend
In the log, look for:
```javascript
set_graphics_backend using d3dmetal as the graphics backend
```text
Or for DXMT:
```text
set_graphics_backend using dxmt as the graphics backend
```text
### 5. Performance Baseline
On M4 Pro (24 GB), expect:
- ~60 FPS on Medium at 100% render scale
- CPU at ~100% on one core (Rosetta + Unity main thread)
- GPU at 55–65% utilization
- ~5–6 GB GPU memory in use
---
## Troubleshooting
### Setup & Deployment Issues
| Issue | Cause | Solution |
|-------|-------|----------|
| **"CrossOver.app is version X, expected 26.3"** | Version mismatch | Install CrossOver 26.3 exactly |
| **"CrossOver_Endfield_Patch is damaged"** | Broken code signature | Click **Cancel** (not Move to Trash), re-run `./scripts/swap-into-crossover.sh`