diff --git a/EpochSilicon.app/Contents/Info.plist b/EpochSilicon.app/Contents/Info.plist index 85c9743..c9ea5e6 100644 --- a/EpochSilicon.app/Contents/Info.plist +++ b/EpochSilicon.app/Contents/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable epochsilicon CFBundleIdentifier - com.eburk.epochsilicon + com.burkey.epochsilicon CFBundleIconFile icon.icns CFBundleShortVersionString @@ -17,7 +17,7 @@ MacOSX CFBundleVersion - 99 + 133 NSHighResolutionCapable NSSupportsAutomaticGraphicsSwitching diff --git a/FyneApp.toml b/FyneApp.toml index f14931c..2a10f0b 100644 --- a/FyneApp.toml +++ b/FyneApp.toml @@ -1,6 +1,6 @@ [Details] Icon = "Icon.png" Name = "EpochSilicon" - ID = "com.eburk.epochsilicon" + ID = "com.burkey.epochsilicon" Version = "1.2.4" - Build = 100 + Build = 134 diff --git a/LICENSE b/LICENSE index 784a2b0..0b338c5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,6 @@ MIT License +Copyright (c) 2025 Evan Burkey Copyright (c) 2025 tairasu Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/Makefile b/Makefile index 7406d31..860028c 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ build-dev: build: build-dev build-release: + @rm -rf ./EpochSilicon.app @echo "Building optimized release version..." CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build \ -ldflags="-s -w -X main.appVersion=$$(grep Version FyneApp.toml | cut -d'"' -f2)" \ @@ -40,15 +41,25 @@ build-release: clean: rm -rf EpochSilicon.app rm -f EpochSilicon.dmg + rm -f EpochSilicon.zip rm -f epochsilicon -dmg: build-release - @echo "Preparing DMG staging directory..." +sign: build-release + 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 @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 - @echo "Creating DMG file..." - @hdiutil create -volname EpochSilicon -srcfolder dmg-staging -ov -format UDZO EpochSilicon.dmg - @echo "DMG created: EpochSilicon.dmg" - @rm -rf dmg-staging \ No newline at end of file + hdiutil create -volname EpochSilicon -srcfolder dmg-staging -ov -format UDZO EpochSilicon.dmg + @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 diff --git a/README.md b/README.md index 4c41555..2ee5be7 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,13 @@ -

EpochSilicon Logo EpochSilicon

- -
- - [![Build](https://github.com/tairasu/TurtleSilicon/actions/workflows/build.yml/badge.svg)](https://github.com/tairasu/TurtleSilicon/actions/workflows/build.yml) - [![Github All Releases](https://img.shields.io/github/downloads/tairasu/TurtleSilicon/total.svg)]() - -
- - - - -
-Turtle WoW FPS on Apple Silicon -TurtleSilicon Application -
- -A user-friendly launcher for Turtle WoW on Apple Silicon Macs, with one-click patching of winerosetta, rosettax87 and d9vk. +A user-friendly launcher for Project Epoch on Apple Silicon Macs, with one-click patching of winerosetta, rosettax87 and d9vk. ## Prerequisites 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). - - I recommend using CrossOver v25.0.1 or later. Older versions will cause issues. -* The **Turtle WoW Client** downloaded from the official website. +* A working version of **CrossOver** installed (the trial version is sufficient and can still be used after expiration). + - You must use CrossOver v25.0.1 or later. Older versions will cause issues. +* 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 @@ -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) +EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), credit for the base of the application goes to tairasu. + ## 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:** * Integrates `rosettax87` for accelerated x87 FPU instructions * Uses `d9vk` for efficient DirectX9 via Vulkan/Metal translation - * Achieves significant FPS improvements (20 FPS → 200+ FPS in many scenarios) -* **Vanilla-Tweaks Support:** Optional integration with automatic application. -* **Automated Setup:** One-click patching for both CrossOver and Turtle WoW installations. + * Achieves significant FPS improvements +* **Automated Setup:** One-click patching for both CrossOver and Epoch installations. * **Simple Interface:** Easy to use GUI with status indicators and configuration options. ## Usage +### Installation + + + ### Method 1: Using the Pre-built Application -1. Launch `TurtleSilicon.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) -3. **Set CrossOver Path**: +1. Launch `EpochSilicon.app`. +2. **Set CrossOver Path**: * 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. -4. **Set TurtleWoW Directory Path**: - * Click "Set/Change" and select the folder where you have your Turtle WoW client files. -5. **Apply Patches**: - * Click "Patch TurtleWoW". +3. **Set Warcraft Directory Path**: + * Click "Set/Change" and select the folder where you have your WoW 3.3.5a client files. +4. **Apply Patches**: + * Click "Patch Epoch". * Click "Patch CrossOver". * Status indicators will turn green once patching is successful for each. 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. * The service will automatically stop when you close the launcher. 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. * **Show Terminal**: Displays terminal output during game launch for debugging. 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. -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 @@ -78,12 +64,12 @@ If you prefer to run the application directly from source code: 1. **Clone the repository**: ```sh - git clone https://github.com/tairasu/TurtleSilicon.git + git clone https://git.burkey.co/eburk/EpochSilicon ``` 2. **Navigate to the directory**: ```sh - cd TurtleSilicon + cd EpochSilicon ``` 3. **Run the application**: @@ -97,10 +83,7 @@ If you prefer to run the application directly from source code: ## Recommended settings -1. Set "Terrain distance" as low as possible. This reduces the overhead stress on the CPU -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 +TBD ## Build Instructions @@ -130,10 +113,10 @@ If you prefer to build manually: ```sh GOOS=darwin GOARCH=arm64 fyne package # 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. diff --git a/main.go b/main.go index 9e0d1b0..409c3b4 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ import ( const appVersion = "0.1.0" func main() { - PEApp := app.NewWithID("com.eburk.epochsilicon") + PEApp := app.NewWithID("com.burkey.epochsilicon") PEWindow := PEApp.NewWindow("EpochSilicon v" + appVersion) PEWindow.Resize(fyne.NewSize(650, 500)) PEWindow.SetFixedSize(true) diff --git a/winerosetta/libSiliconPatch.dll b/winerosetta/libSiliconPatch.dll deleted file mode 100644 index d49eda0..0000000 Binary files a/winerosetta/libSiliconPatch.dll and /dev/null differ diff --git a/winerosetta/vanilla-tweaks.exe b/winerosetta/vanilla-tweaks.exe deleted file mode 100755 index b1e92f4..0000000 Binary files a/winerosetta/vanilla-tweaks.exe and /dev/null differ