-
Notifications
You must be signed in to change notification settings - Fork 386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[🍏] Mac ports end at 2.3/1.13, missing newer versions #3697
Comments
I covered this in the forum thread for the Mac builds. The technology used by BizHawk isn’t available for 64-bit macOS so when Apple dropped 32-bit support everything stopped being possible. There are some pieces that are possible now but the main versions are not compatible and a lot of effort is required to make some of the dependencies work. That’s the short answer. |
Now that I'm sitting in front of a computer, I can type out a more detailed response. Thanks @YoshiRulz for adding links to my reply above this one. I missed some pieces that I explained in the posts linked above, like forgetting that I had done a few 64-bit builds although that stuff broke again around macOS 10.15. Writing this up might help anyone interested in looking into things understand what would be involved to get it working again going forwards. In short, BizHawk in a .NET App that relies on "Windows Forms" (or WinForms for short) as its UI technology. WinForms was designed for Microsoft Windows. The Mono project was created to run .NET apps on Linux and eventually Mac. They created a version of WinForms that could run on Linux and Mac many years ago. When Microsoft acquired Xamarin (the company that did most of the development work on Mono), Microsoft decided that the best path forward was official support for Linux and Mac and so they created .NET Core which is now the main .NET going forwards. That involved building new technologies that would work well cross platform and WinForms was not one of the things that made sense for them to support on Linux and Mac because it was originally intended for Windows. When Apple dropped 32-bit support, the old WinForms implementation from Mono needed that and broke. Now Microsoft has something called MAUI that can be used across Windows, Mac, Android and iOS because it was designed to be multi-platform from the beginning. But MAUI is completely different from WinForms and not just something you can upgrade to. There are other UI options as well from third parties that work better as multi-platform, but the problem is the entire UI for BizHawk would need to be rewritten in one of these and I don't think anyone has the time or motivation to do that. When I got BizHawk working again for a few random builds after 32-bit support was dropped, that was the result of efforts by employees of a company that produce a product called eM Client. That company sells an email client written in WinForms on Windows and Mac, so they did most of the development necessary to get WinForms working on newer versions of macOS and open sourced the code here. A big obstacle with this approach is that by substituting a 3rd party replacement for WinForms, every other library that BizHawk depends on also needs to be updated to use that replacement too. In this case, OpenTK which is used to provide OpenGL supports as well sound and game controller support, needs to be rebuilt against the custom WinForms implementation and modified to use it. That's what I had done for the experimental 2019 build of BizHawk 2.1 which no longer runs on current OS versions. There were also some "hacks" that I had to do inside BizHawk to get OpenGL hooked up and working in that state; they were things that could never be cleanly merged into the official codebase. Over time, things broke again. The guys at emclient updated their version of WinForms to work again with the latest macOS, but at the same time they updated it to work against newer versions of .NET and not older ones. At the moment their version of WinForms only works against .NET 6 and higher, which BizHawk still uses .NET Framework 4 on Windows. @YoshiRulz has a .NET 6 fork that was created a couple years back now which might be a feasible target, but there's still the matter of OpenTK which is needed for 3D acceleration. That's gotten a lot of updates over the past few years and is likely to be even more difficult to adapt to the unofficial WinForms port that I was using before. It's also worth mentioning that I tried to get some other WinForms apps that I had ported to Mac years ago working against the latest WinForms port from the emclient team but ran into a problem where I got stuck: they compiled but crashed at runtime trying to start. It's been a few months since I've had time to troubleshoot that and will probably revisit it sometime this year. In short, there are two main approaches that could be taken to get newer BizHawk versions running on macOS again:
It is definitely possible to do either of these but finding someone with the necessary experience, time, and motivation to do so seems unlikely especially considering that my post offering to walk someone through most of the stuff that I described above was made over 3 years ago now. If I ever get any of the smaller less complex apps that I ported years ago working against emclient's WinForms .NET 6 implementation I may try plugging it into BizHawk again to cobble together a basic build but that could take months, years, or just never happen. I'm occasionally on Discord and still get issue notifications for here in the event someone pops in looking to try and tackle some of this. |
I actually read the full thing on this, And wow. I think if you dont know how to build Bizhawk to Mac, You're gonna have to use a virtual machine, But Parallels desktop costs fucking money and that it has this stupid fucking trial day bullshit that I'm fed up with. Sorry for the mini rant and profanity, But if your making a virtual machine, Don't fucking make it so you have to pay for unlimited trial, Use the FL Studio approach instead. |
There definitely exists FOSS virtualisation software for macOS, for example UTM. Reopening because this isn't tracked elsewhere. |
The best long term future for Bizhawk is probably a non-winforms rewrite. The situation on macOS is bad as described here. The situation on Linux is also bad, as the only winforms is the mostly defunct Mono variant. The situation on Windows is not significantly better, where the codebase is mostly the leftover junk from .net 2 and they've just been keeping it on life support forever. |
The text was updated successfully, but these errors were encountered: