7 Commits
1.0.5 ... main

Author SHA1 Message Date
718eace492 1.0.9 2025-07-25 21:57:35 -07:00
ca77c609cd fix size check 2025-07-25 21:56:32 -07:00
502ca7a4f2 1.0.8 2025-07-25 21:48:20 -07:00
7397fae6f4 change pathing 2025-07-25 21:47:46 -07:00
a07958563a 1.0.7 2025-07-25 21:25:29 -07:00
c80204579f change how to check for dependencies 2025-07-25 21:25:01 -07:00
11909e8502 1.0.6 2025-07-25 19:03:52 -07:00
7 changed files with 25 additions and 26 deletions

View File

@@ -2,5 +2,5 @@
Icon = "Icon.png" Icon = "Icon.png"
Name = "EpochSilicon" Name = "EpochSilicon"
ID = "com.burkey.epochsilicon" ID = "com.burkey.epochsilicon"
Version = "1.0.3" Version = "1.0.9"
Build = 29 Build = 31

View File

@@ -19,11 +19,7 @@ build: build-dev
build-release: build-release:
@rm -rf ./EpochSilicon.app @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" -trimpath -tags=release -o epochsilicon .
-ldflags="-s -w -X main.appVersion=$$(grep Version FyneApp.toml | cut -d'"' -f2)" \
-trimpath \
-tags=release \
-o epochsilicon .
@echo "Packaging with fyne..." @echo "Packaging with fyne..."
GOOS=darwin GOARCH=arm64 fyne package --release --executable epochsilicon GOOS=darwin GOARCH=arm64 fyne package --release --executable epochsilicon
@echo "Copying additional resources to app bundle..." @echo "Copying additional resources to app bundle..."

View File

@@ -4,6 +4,8 @@
A user-friendly launcher for Project Epoch 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.
**This software is currently in active development, there WILL be bugs and constant updates as Epoch rolls out**
## Features ## Features
* **Apple Silicon Compatibility:** Runs 32-bit DirectX9 World of Warcraft (v3.3.5a) 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.
@@ -75,7 +77,7 @@ This appears to be a problem with using a built-in version of `rosettax87`. In o
1. Install Xcode command line tools by opening a terminal and typing `xcode-select --install` and following the prompts 1. Install Xcode command line tools by opening a terminal and typing `xcode-select --install` and following the prompts
2. Setup [Homebrew](https://brew.sh/) if you don't have it already 2. Setup [Homebrew](https://brew.sh/) if you don't have it already
3. Install Cmake by opening a terminal and enter `brew install cmake` 3. Install Cmake by opening a terminal and enter `brew install cmake`. Cmake must be installed through Homebrew
3. Run EpochSilicon and click the `Troubleshooting` button 3. Run EpochSilicon and click the `Troubleshooting` button
4. Find the line that says `Build Rosettax87 locally` and click the `Build` button, following the prompts 4. Find the line that says `Build Rosettax87 locally` and click the `Build` button, following the prompts
@@ -122,9 +124,7 @@ TBD
## Bundled Binaries ## Bundled Binaries
The `rosettax87` and `winerosetta` components included in this application are precompiled for convenience. If you prefer, you can compile them yourself by following the instructions provided by Lifeisawful on the official repositories: The `rosettax87` and `winerosetta` components included in this application are precompiled for convenience. You can compile them yourself by following the instructions provided above in the Troubleshooting section
[https://github.com/Lifeisawful/winerosetta](https://github.com/Lifeisawful/winerosetta)
[https://github.com/Lifeisawful/rosettax87](https://github.com/Lifeisawful/rosettax87)
## License ## License
@@ -138,5 +138,5 @@ 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. EpochSilicon is a fork of [https://turtlesilicon.github.io/](TurtleSilicon), credit for the base of the application goes to [**@tairasu**](https://github.com/tairasu)

View File

@@ -11,7 +11,7 @@ import (
"strings" "strings"
) )
const appVersion = "1.0.3" const appVersion = "1.0.9"
func main() { func main() {
log.SetupLogging() log.SetupLogging()

View File

@@ -21,6 +21,11 @@ import (
"fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/dialog"
) )
const (
CmakePath = "/opt/homebrew/bin/cmake"
ClangPath = "/usr/bin/clang"
)
func PatchEpoch(myWindow fyne.Window, updateAllStatuses func()) { func PatchEpoch(myWindow fyne.Window, updateAllStatuses func()) {
log.Debug("Patch Epoch clicked") log.Debug("Patch Epoch clicked")
if paths.EpochPath == "" { if paths.EpochPath == "" {
@@ -486,14 +491,14 @@ func BuildRosetta() (string, string, error) {
return "", "", fmt.Errorf("failed to clone repository: %v", err) return "", "", fmt.Errorf("failed to clone repository: %v", err)
} }
cmd := exec.Command("cmake", "-B", "build") cmd := exec.Command(CmakePath, "-B", "build")
cmd.Dir = clonedDir cmd.Dir = clonedDir
err = cmd.Run() err = cmd.Run()
if err != nil { if err != nil {
return "", "", fmt.Errorf("failed to create build files: %v", err) return "", "", fmt.Errorf("failed to create build files: %v", err)
} }
cmd = exec.Command("cmake", "--build", "build") cmd = exec.Command(CmakePath, "--build", "build")
cmd.Dir = clonedDir cmd.Dir = clonedDir
err = cmd.Run() err = cmd.Run()
if err != nil { if err != nil {

View File

@@ -208,14 +208,14 @@ func showTroubleshootingPopup() {
dialog.NewConfirm("Build rosettax87", msg, func(confirm bool) { dialog.NewConfirm("Build rosettax87", msg, func(confirm bool) {
if confirm { if confirm {
// Check for dependencies // Check for dependencies
if _, err := exec.LookPath("clang"); err != nil { if err := exec.Command(patching.ClangPath, "--version").Run(); err != nil {
m := fmt.Errorf("xcode command line tools are not installed on your computer. Click the Website button in the app and read the instructions on building rosettax87 before trying again") m := fmt.Errorf("xcode command line tools are not installed on your computer. Click the Website button in the app and read the instructions on building rosettax87 before trying again. Error: %v", err)
log.Error(m.Error()) log.Error(m.Error())
dialog.ShowError(m, currentWindow) dialog.ShowError(m, currentWindow)
return return
} }
if _, err := exec.LookPath("cmake"); err != nil { if err := exec.Command(patching.CmakePath, "--version").Run(); err != nil {
m := fmt.Errorf("Cmake is not installed on your computer. Click the Website button in the app and read the instructions on building rosettax87 before trying again") m := fmt.Errorf("Cmake is not installed on your computer. Click the Website button in the app and read the instructions on building rosettax87 before trying again. Error: %v", err)
log.Error(m.Error()) log.Error(m.Error())
dialog.ShowError(m, currentWindow) dialog.ShowError(m, currentWindow)
return return

View File

@@ -120,14 +120,12 @@ func updateEpochStatus() {
// Check if patched files have the correct size (matches bundled versions) // Check if patched files have the correct size (matches bundled versions)
winerosettaDllCorrectSize := utils.CompareFileWithBundledResource(winerosettaDllPath, "winerosetta/winerosetta.dll") winerosettaDllCorrectSize := utils.CompareFileWithBundledResource(winerosettaDllPath, "winerosetta/winerosetta.dll")
d3d9DllCorrectSize := utils.CompareFileWithBundledResource(d3d9DllPath, "winerosetta/d3d9.dll") d3d9DllCorrectSize := utils.CompareFileWithBundledResource(d3d9DllPath, "winerosetta/d3d9.dll")
rosettaX87CorrectSize := utils.CompareFileWithBundledResource(rosettaX87ExePath, "rosettax87/rosettax87")
libRuntimeRosettaX87CorrectSize := utils.CompareFileWithBundledResource(libRuntimeRosettaX87Path, "rosettax87/libRuntimeRosettax87")
if utils.PathExists(winerosettaDllPath) && utils.PathExists(d3d9DllPath) && if utils.PathExists(winerosettaDllPath) && utils.PathExists(d3d9DllPath) &&
utils.DirExists(rosettaX87DirPath) && utils.PathExists(rosettaX87ExePath) && utils.DirExists(rosettaX87DirPath) && utils.PathExists(rosettaX87ExePath) &&
utils.PathExists(libRuntimeRosettaX87Path) && dllsFileValid && utils.PathExists(libRuntimeRosettaX87Path) && dllsFileValid &&
winerosettaDllCorrectSize && d3d9DllCorrectSize && winerosettaDllCorrectSize && d3d9DllCorrectSize &&
rosettaX87CorrectSize && libRuntimeRosettaX87CorrectSize && epochPatchesApplied { epochPatchesApplied {
paths.PatchesAppliedEpoch = true paths.PatchesAppliedEpoch = true
} }