build scripts
Some checks failed
Build Go/Fyne App for macOS ARM64 / build (pull_request) Has been cancelled
Some checks failed
Build Go/Fyne App for macOS ARM64 / build (pull_request) Has been cancelled
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>epochsilicon</string>
|
<string>epochsilicon</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.eburk.epochsilicon</string>
|
<string>com.burkey.epochsilicon</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>icon.icns</string>
|
<string>icon.icns</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<string>MacOSX</string>
|
<string>MacOSX</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>99</string>
|
<string>133</string>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
[Details]
|
[Details]
|
||||||
Icon = "Icon.png"
|
Icon = "Icon.png"
|
||||||
Name = "EpochSilicon"
|
Name = "EpochSilicon"
|
||||||
ID = "com.eburk.epochsilicon"
|
ID = "com.burkey.epochsilicon"
|
||||||
Version = "1.2.4"
|
Version = "1.2.4"
|
||||||
Build = 100
|
Build = 134
|
||||||
|
1
LICENSE
1
LICENSE
@@ -1,5 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Evan Burkey <evan@burkey.co>
|
||||||
Copyright (c) 2025 tairasu
|
Copyright (c) 2025 tairasu
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
23
Makefile
23
Makefile
@@ -17,6 +17,7 @@ build-dev:
|
|||||||
build: build-dev
|
build: build-dev
|
||||||
|
|
||||||
build-release:
|
build-release:
|
||||||
|
@rm -rf ./EpochSilicon.app
|
||||||
@echo "Building optimized release version..."
|
@echo "Building optimized release version..."
|
||||||
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build \
|
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build \
|
||||||
-ldflags="-s -w -X main.appVersion=$$(grep Version FyneApp.toml | cut -d'"' -f2)" \
|
-ldflags="-s -w -X main.appVersion=$$(grep Version FyneApp.toml | cut -d'"' -f2)" \
|
||||||
@@ -40,15 +41,25 @@ build-release:
|
|||||||
clean:
|
clean:
|
||||||
rm -rf EpochSilicon.app
|
rm -rf EpochSilicon.app
|
||||||
rm -f EpochSilicon.dmg
|
rm -f EpochSilicon.dmg
|
||||||
|
rm -f EpochSilicon.zip
|
||||||
rm -f epochsilicon
|
rm -f epochsilicon
|
||||||
|
|
||||||
dmg: build-release
|
sign: build-release
|
||||||
@echo "Preparing DMG staging directory..."
|
codesign --timestamp --options runtime -s "Developer ID Application: Evan Burkey (2TXG4AP658)" ./EpochSilicon.app/Contents/Resources/rosettax87/rosettax87
|
||||||
|
codesign --timestamp --options runtime -s "Developer ID Application: Evan Burkey (2TXG4AP658)" ./EpochSilicon.app/Contents/Resources/rosettax87/libRuntimeRosettax87
|
||||||
|
codesign --timestamp --options runtime -s "Developer ID Application: Evan Burkey (2TXG4AP658)" ./EpochSilicon.app
|
||||||
|
@/usr/bin/ditto -c -k -rsrc --sequesterRsrc --keepParent ./EpochSilicon.app EpochSilicon.zip
|
||||||
|
xcrun notarytool submit --keychain-profile "EpochSilicon" --wait ./EpochSilicon.zip
|
||||||
|
xcrun stapler staple ./EpochSilicon.app
|
||||||
|
|
||||||
|
dmg: build-release sign
|
||||||
|
echo "Preparing DMG staging directory..."
|
||||||
@rm -rf dmg-staging
|
@rm -rf dmg-staging
|
||||||
@mkdir dmg-staging
|
@mkdir dmg-staging
|
||||||
@cp -R EpochSilicon.app dmg-staging/
|
@/usr/bin/ditto --rsrc ./EpochSilicon.app dmg-staging/EpochSilicon.app
|
||||||
@ln -s /Applications dmg-staging/Applications
|
@ln -s /Applications dmg-staging/Applications
|
||||||
@echo "Creating DMG file..."
|
hdiutil create -volname EpochSilicon -srcfolder dmg-staging -ov -format UDZO EpochSilicon.dmg
|
||||||
@hdiutil create -volname EpochSilicon -srcfolder dmg-staging -ov -format UDZO EpochSilicon.dmg
|
|
||||||
@echo "DMG created: EpochSilicon.dmg"
|
|
||||||
@rm -rf dmg-staging
|
@rm -rf dmg-staging
|
||||||
|
codesign --timestamp -i com.burkey.epochsilicon -s "Developer ID Application: Evan Burkey (2TXG4AP658)" ./EpochSilicon.dmg
|
||||||
|
xcrun notarytool submit --keychain-profile "EpochSilicon" --wait ./EpochSilicon.dmg
|
||||||
|
xcrun stapler staple ./EpochSilicon.dmg
|
||||||
|
69
README.md
69
README.md
@@ -1,29 +1,13 @@
|
|||||||
<h1 align="center"><img src="Icon.png" alt="EpochSilicon Logo" width="50" height="50" align="center"> EpochSilicon</h1>
|
A user-friendly launcher for Project Epoch on Apple Silicon Macs, with one-click patching of winerosetta, rosettax87 and d9vk.
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
<a href="">[](https://github.com/tairasu/TurtleSilicon/actions/workflows/build.yml)</a>
|
|
||||||
<a href="">[]()</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<img src="img/epochsilicon-fps_v2.png" alt="Turtle WoW FPS on Apple Silicon" width="49%" />
|
|
||||||
<img src="img/epochsilicon-app_v4.png" alt="TurtleSilicon Application" width="49%" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
A user-friendly launcher for Turtle WoW on Apple Silicon Macs, with one-click patching of winerosetta, rosettax87 and d9vk.
|
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Before you begin, ensure you have the following:
|
Before you begin, ensure you have the following:
|
||||||
|
|
||||||
* A working version of **CrossOver** installed (the trial version is sufficient and can still be used after expiration).
|
* A working version of **CrossOver** installed (the trial version is sufficient and can still be used after expiration).
|
||||||
- I recommend using CrossOver v25.0.1 or later. Older versions will cause issues.
|
- You must use CrossOver v25.0.1 or later. Older versions will cause issues.
|
||||||
* The **Turtle WoW Client** downloaded from the official website.
|
* A 3.3.5a World of Warcraft client. You can easily get the client from [Project Epoch's download page](https://project-epoch.com/play)
|
||||||
|
* Place the client in an folder you have rights to. Your user directory (example: `/Users/username/Epoch`) is a good default choice. Avoid spaces in your path!
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
@@ -33,30 +17,34 @@ All credit for the core translation layer `winerosetta` and `rosettax87` goes to
|
|||||||
|
|
||||||
[https://github.com/Lifeisawful/rosettax87](https://github.com/Lifeisawful/rosettax87)
|
[https://github.com/Lifeisawful/rosettax87](https://github.com/Lifeisawful/rosettax87)
|
||||||
|
|
||||||
|
EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), credit for the base of the application goes to tairasu.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* **Apple Silicon Compatibility:** Runs 32-bit DirectX9 World of Warcraft (v1.12) on M1/M2/M3/M4 Macs without "illegal instruction" errors.
|
* **Apple Silicon Compatibility:** Runs 32-bit DirectX9 World of Warcraft (v3.3.5a) on M1/M2/M3/M4 Macs without "illegal instruction" errors.
|
||||||
* **Performance Optimization:**
|
* **Performance Optimization:**
|
||||||
* Integrates `rosettax87` for accelerated x87 FPU instructions
|
* Integrates `rosettax87` for accelerated x87 FPU instructions
|
||||||
* Uses `d9vk` for efficient DirectX9 via Vulkan/Metal translation
|
* Uses `d9vk` for efficient DirectX9 via Vulkan/Metal translation
|
||||||
* Achieves significant FPS improvements (20 FPS → 200+ FPS in many scenarios)
|
* Achieves significant FPS improvements
|
||||||
* **Vanilla-Tweaks Support:** Optional integration with automatic application.
|
* **Automated Setup:** One-click patching for both CrossOver and Epoch installations.
|
||||||
* **Automated Setup:** One-click patching for both CrossOver and Turtle WoW installations.
|
|
||||||
* **Simple Interface:** Easy to use GUI with status indicators and configuration options.
|
* **Simple Interface:** Easy to use GUI with status indicators and configuration options.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Method 1: Using the Pre-built Application
|
### Method 1: Using the Pre-built Application
|
||||||
|
|
||||||
1. Launch `TurtleSilicon.app`.
|
1. Launch `EpochSilicon.app`.
|
||||||
* (The app is not signed, so you will get a "this app is damaged" message. Open Terminal and enter `xattr -cr /Applications/TurtleSilicon.app` to bypass it)
|
2. **Set CrossOver Path**:
|
||||||
3. **Set CrossOver Path**:
|
|
||||||
* If CrossOver is installed in the default location (`/Applications/CrossOver.app`), this path will be pre-filled.
|
* If CrossOver is installed in the default location (`/Applications/CrossOver.app`), this path will be pre-filled.
|
||||||
* Otherwise, click "Set/Change" and navigate to your `CrossOver.app` bundle.
|
* Otherwise, click "Set/Change" and navigate to your `CrossOver.app` bundle.
|
||||||
4. **Set TurtleWoW Directory Path**:
|
3. **Set Warcraft Directory Path**:
|
||||||
* Click "Set/Change" and select the folder where you have your Turtle WoW client files.
|
* Click "Set/Change" and select the folder where you have your WoW 3.3.5a client files.
|
||||||
5. **Apply Patches**:
|
4. **Apply Patches**:
|
||||||
* Click "Patch TurtleWoW".
|
* Click "Patch Epoch".
|
||||||
* Click "Patch CrossOver".
|
* Click "Patch CrossOver".
|
||||||
* Status indicators will turn green once patching is successful for each.
|
* Status indicators will turn green once patching is successful for each.
|
||||||
6. **Start RosettaX87 Service**:
|
6. **Start RosettaX87 Service**:
|
||||||
@@ -64,13 +52,11 @@ All credit for the core translation layer `winerosetta` and `rosettax87` goes to
|
|||||||
* This will run the RosettaX87 service in the background and is required for launching the game.
|
* This will run the RosettaX87 service in the background and is required for launching the game.
|
||||||
* The service will automatically stop when you close the launcher.
|
* The service will automatically stop when you close the launcher.
|
||||||
7. **Configure Options (Optional)**:
|
7. **Configure Options (Optional)**:
|
||||||
* **Enable vanilla-tweaks**: Check this box to use vanilla-tweaks, which provides various game improvements and fixes.
|
|
||||||
* If vanilla-tweaks hasn't been applied yet, TurtleSilicon will automatically offer to apply it when you launch the game.
|
|
||||||
* **Enable Metal Hud**: Shows FPS counter in-game.
|
* **Enable Metal Hud**: Shows FPS counter in-game.
|
||||||
* **Show Terminal**: Displays terminal output during game launch for debugging.
|
* **Show Terminal**: Displays terminal output during game launch for debugging.
|
||||||
8. **Launch Game**:
|
8. **Launch Game**:
|
||||||
* Once both paths are set, both components are patched, and the RosettaX87 service is running, the "Launch Game" button will become active. Click it.
|
* Once both paths are set, both components are patched, and the RosettaX87 service is running, the "Launch Game" button will become active. Click it.
|
||||||
9. **Enjoy**: Experience a significantly smoother Turtle WoW on your Apple Silicon Mac!
|
9. **Enjoy**: Experience a VM free, smoother Project Epoch on your Apple Silicon Mac!
|
||||||
|
|
||||||
### Method 2: Running from Source Code
|
### Method 2: Running from Source Code
|
||||||
|
|
||||||
@@ -78,12 +64,12 @@ If you prefer to run the application directly from source code:
|
|||||||
|
|
||||||
1. **Clone the repository**:
|
1. **Clone the repository**:
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/tairasu/TurtleSilicon.git
|
git clone https://git.burkey.co/eburk/EpochSilicon
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Navigate to the directory**:
|
2. **Navigate to the directory**:
|
||||||
```sh
|
```sh
|
||||||
cd TurtleSilicon
|
cd EpochSilicon
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Run the application**:
|
3. **Run the application**:
|
||||||
@@ -97,10 +83,7 @@ If you prefer to run the application directly from source code:
|
|||||||
|
|
||||||
## Recommended settings
|
## Recommended settings
|
||||||
|
|
||||||
1. Set "Terrain distance" as low as possible. This reduces the overhead stress on the CPU
|
TBD
|
||||||
2. Turn Vertex Animation Shaders on. Otherwise you get graphic glitches on custom models.
|
|
||||||
3. Set Multisampling to 24-bit color 24-bit depth **2x** to make portraits load
|
|
||||||
4. Add `SET shadowLOD "0"` to your Config.wtf inside the WTF directory
|
|
||||||
|
|
||||||
## Build Instructions
|
## Build Instructions
|
||||||
|
|
||||||
@@ -130,10 +113,10 @@ If you prefer to build manually:
|
|||||||
```sh
|
```sh
|
||||||
GOOS=darwin GOARCH=arm64 fyne package
|
GOOS=darwin GOARCH=arm64 fyne package
|
||||||
# Then manually copy the resource directories
|
# Then manually copy the resource directories
|
||||||
cp -R rosettax87 winerosetta TurtleSilicon.app/Contents/Resources/
|
cp -R rosettax87 winerosetta EpochSilicon.app/Contents/Resources/
|
||||||
```
|
```
|
||||||
|
|
||||||
In either case, this will create a `TurtleSilicon.app` file in the project directory, which you can then run.
|
In either case, this will create a `EpochSilicon.app` file in the project directory, which you can then run.
|
||||||
|
|
||||||
Make sure you have an `Icon.png` file in the root of the project directory before building.
|
Make sure you have an `Icon.png` file in the root of the project directory before building.
|
||||||
|
|
||||||
|
2
main.go
2
main.go
@@ -11,7 +11,7 @@ import (
|
|||||||
const appVersion = "0.1.0"
|
const appVersion = "0.1.0"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
PEApp := app.NewWithID("com.eburk.epochsilicon")
|
PEApp := app.NewWithID("com.burkey.epochsilicon")
|
||||||
PEWindow := PEApp.NewWindow("EpochSilicon v" + appVersion)
|
PEWindow := PEApp.NewWindow("EpochSilicon v" + appVersion)
|
||||||
PEWindow.Resize(fyne.NewSize(650, 500))
|
PEWindow.Resize(fyne.NewSize(650, 500))
|
||||||
PEWindow.SetFixedSize(true)
|
PEWindow.SetFixedSize(true)
|
||||||
|
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user