I'll bump this with a long overdue progress update:
No new release yet, but maybe that will finally happen in 2019.
As mentioned in a previous update, when BizHawk went 64-bit in version 2.0 I was unable to use the existing UI because WinForms on macOS only supported 32-bit and it didn't look like they were ever going to update that because Microsoft doesn't officially support WinForms on MacOS. (BizHawk 1.x Mac builds were using the 32-bit Mono WInForms implementation that was written against the old macOS Windowing system that was deprecated over 10 years ago.) It didn't seem like anyone was going to create a 64-bit implementation against the modern APIs, so I had started EtoHawk which was going to be a brand new UI native to macOS & Linux. I had that barely working (Load Rom, configure controls, sound + input, that's it) but when I tried to implement OpenGL for video I ran into problems and got stuck for a few months where I could see the screen border color but not the actual video.
In September of last year, I discovered that some guy had released a 64-bit macOS implementation of WinForms earlier in the year that his company was using to port their product to Mac. Unlike the Mono implementation, this one substitutes native macOS controls (buttons, menus, checkboxes, open/save dialogs) whenever feasible. The only downside to this because it's a replacement for a system library, I either have to build my own separate copy of Mono to use it as if it were built-in, or fork BizHawk to reference the unofficial version which makes the same code not build against Windows. I chose the latter, so that anyone else can check out the code for my fork and build it without needing an entirely different version of Mono.
After getting BizHawk running against it (as seen in the screenshot from last September) I had to fork OpenTK as well and port the OpenTK WinForms GLControl to work against the special Cocoa macOS WinForms implementation. Because I'm not very good at OpenGL, I had to throw some small hacks into BizHawk to get the native control / view handles, and also support 2x+ scaling for Retina displays. 64-Bit QuickNES is running again, so that's great.
What's left:
- Broken UI stuff, worse than before. For example controls don't appear in the control dialog to map them right now. (But the defaults mostly work.) Also, right now the menus are eating inputs from buttons that overlap to them, in other words if something is mapped to C and you press that, the config menu actually opens. I need to make sure that when the video has focus that the menus don't eat keyboard inputs.
- Rest of the previously supported native cores. QuickNES is working, it was the first one I did.
- Re-enable gamepad support. It's commented out right now just because I didn't feel like plugging in controllers to re-implement and test that.
- Some stability issues, but also caused by UI stuff.
- Menus are still native, but they're attached to the window like a Windows application. I may or may not fix this and put them back at the top of the screen.
Advantages of the new version so far over 1.x:
- Supports Retina displays, as pictured above. (View full image if using a normal monitor)
- UI is faster and more responsive. No more sluggish menus, windows usually draw faster.
- 64-bit. It will still work when Apple drops support for 32-bit applications in the next release of macOS, 10.15, which is due in September or October of 2019.
- It can be built using the Xamarin.Mac Linker. This results in a massive executable (probably twice the size of the last 1.x release... sorry) but you no longer need to install the Mono runtime to run the app. It automatically includes only the parts needed to run the app, so you can just download and install on a new machine without worrying about Mono.
I'll try to post another update in a few months, but I am still committing to the fork on my GitHub if another developer wants to build their own copy. My OpenTK fork is also checked in under a branch for the Cocoa WinForms GLControl. (But the binaries are committed to the BizHawk fork, so you don't need to build your own copy of that)