1 2
8 9
Joined: 3/11/2012
Posts: 149
Location: WI
TAG wrote:
any new developments on bizhawk?
Not really. I have nothing really new to share, other than this screenshot from 2 weeks ago: http://projects.sappharad.com/bizhawk_mac/bh2_macOS_64bitWinForms.png I gave up on writing a native Mac UI for BizHawk because I ran into problems getting OpenGL to work correctly and after 2 months of being stuck (I only work on it one night every week) I decided to give up and go back to the original approach of using the Windows UI. The problem I got stuck on was some texture weirdness with OpenGL - the border color for systems that have one like GameGear was showing correctly, but the actual display was just a blank rectangle. The texture it needed to use was there, it just wasn't making it to output, even on a Windows build. I think it may have had something to do with pixel shaders but that's where I stopped before switching approaches. It wasn't possible to use the Windows UI on 64-bit applications a year ago, and I wasn't expecting it to be possible, but earlier this year it did become an option again. Someone created a new port of WinForms for MacOS that supports 64-bit and even substitutes native Mac controls in some places. This gives native buttons, checkboxes, file dialogs, and some other things without me having to write a wrapper like the old Mac builds. The only thing it doesn't have that the previous Mac builds had was native menus. I started over with this approach about 3 weeks ago, so no games even load or work right now. I'm running into problems getting Audio and Video to work with this new approach. Audio I'm not sure why because it should work, video requires more work on my end because I have to port the OpenGL control to be compatible with 64-bit Mac WinForms. (And the GDI option isn't feasible due to the WinForms port being incomplete) In short, nothing has happened in a year because I started over twice. The remains of what happened with EtoHawk are on my github fork, but the new WinForms port has not been committed anywhere yet since it can't run any games yet.
Site Admin, Skilled player (1250)
Joined: 4/17/2010
Posts: 11469
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
r57shell has some knowledge of opengl. I saw you questions on IRC, and he shared some ideas, but I couldn't catch you there live. He's occasionally on IRC, but you can try forum PM too.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 3/11/2012
Posts: 149
Location: WI
feos wrote:
r57shell has some knowledge of opengl. I saw you questions on IRC, and he shared some ideas, but I couldn't catch you there live. He's occasionally on IRC, but you can try forum PM too.
It's kind of irrelevant at this point unless someone prefers that I try to continue down the path of an Eto frontend. Using WinForms saves me so much time re-implementing all of the UI stuff, despite it not being as good as native. If someone else wants to play with it, the EtoHawk solution is in BizHawk.Client.EtoHawk and it will compile on Windows to both WinForms and WPF: https://github.com/Sappharad/BizHawk But I'm not looking at it right now in favor of WinForms. I'm willing to change my mind again, so I can stop by IRC again on Tuesday to discuss it further.
Site Admin, Skilled player (1250)
Joined: 4/17/2010
Posts: 11469
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Well you mentioned you're still working on opengl, so when you have problems with it again, just know that you don't have to struggle with them alone.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Isn't OpenGL deprecated by Apple?
Joined: 3/11/2012
Posts: 149
Location: WI
creaothceann wrote:
Isn't OpenGL deprecated by Apple?
Yes. But deprecated doesn't mean removed, it just means they don't want people to use it anymore and won't be updating it. There are some APIs that have been deprecated for over 10 years that still work fine because they need to keep them for backwards compatibility with old applications. It's possible for them to remove it someday, but it's very unlikely at least for several years. The most logical time for them to do something evil like that would be when they stop using Intel processors and switch to their own in-house processors rumored for 2020 or later, because at that point they'd be dropping other backwards compatibility as a result anyway. There's an open source port of Vulkan to macOS that Valve uses for some of their games now; performance on that is better than OpenGL. It will probably be an option at some point. In the event they actually plan to drop OpenGL, I'll worry about it then. Edit: Update 2018-Dec-11 - I finally have the OpenTK GLControl working against the unofficial 64-bit macOS Cocoa WinForms implementation. This means Video + Sound are working again. But I've been using a version of OpenTK that's over a year old, so I now need to re-implement my changes against the latest version of OpenTK and not make a bunch of hacks everywhere in BizHawk to use them. Now that games are actually playable again, I'm probably less than 6 months away from having a new release ready. (Still working on this only an hour or two a week)
Joined: 3/11/2012
Posts: 149
Location: WI
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)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3806)
Joined: 11/30/2014
Posts: 2827
Location: US
Congrats Sapphard and great work ! Too bad you spent so much of your time in frustration only to have a solution randomly pop up, but eh that’s how it goes sometimes. BizHawk is getting a lot of portability improvements lately, pretty cool.
Joined: 3/11/2012
Posts: 149
Location: WI
New BizHawk 2.3 macOS alpha build. EXTREMELY POOR QUALITY use at own risk! https://projects.sappharad.com/bizhawk_mac/BizHawk_mac_2.3.0_alpha.dmg Does NOT replace 1.13.1, build only being provided because I'm going to archive the changes and start over against the latest code now that a bunch of stuff was changed in master to improve Linux support. The direction I went previously differs from the approach to multi-platform support that's being used in current development, and starting again is the best option. Going forward there should need to be fewer macOS specific hacks (still going to need some platform specific code) which will make my life easier. Problems and limitations of this build:
    * It will crash when you try to exit. Don't bother using the macOS crash reporter, no one will get the reports except Apple and it's not their fault so they can't do anything about it. * Control configuration is broken, you won't see any buttons to configure. You're stuck with default buttons! * Several consoles supported in the previous build are NOT supported in this build. For example, Genesis/MegaDrive and SuperNES no longer work. * The menus are messed up. Every option is always enabled. * Do not try to resize the window manually, it might get stuck in resize mode forever. * Gamepad support is disabled, because I forgot to enable and test that again. * ...and more!
Benefits to using this release:
    * You can play NES games, Gameboy Games, GameGear, and a few other systems too. * It's 64-bit, so you won't see the "This application is not optimized for your computer" on macOS 10.13 and later anymore. * You no longer need to install Mono. Everything needed is bundled inside the app. This made the app over twice as big, but is easier to install going forward. * Windows and dialogs now contain native macOS controls, some of the time.
If you're like me and only use BizHawk to play games, this build can be used to do that. You're welcome to provide feedback if you want, but since I'm starting over any problems reported might not be relevant or get resolved on their own prior to next release. Enjoy, maybe? No idea when I'll have something better to share and I've played NES games with this build so I thought I should dump it out there before things go back to a worse state for a bit.
TAG
He/Him
Joined: 2/9/2014
Posts: 407
Location: In Oblivion
Wow absolutely amazing work. I am wanting to download it now
I’m sorry. Really I am... I am so sorry for what I did. Forgive me.
Joined: 3/11/2012
Posts: 149
Location: WI
It was my intention to post something about this maybe 3 weeks ago, but I keep running out of time and/or forgetting. None of the builds released thus far actually work on macOS 10.15 Catalina released last month. The 1.x series was 32-bit, thus not compatible with macOS Catalina which dropped support for 32-bit apps. The 2.3 alpha above is 64-bit, but for some reason keyboard input doesn't work, possibly due to new security changes because I noticed macOS requires you to allow an exemption for system wide keyboard access when running that build. (Keyboard still doesn't work if you allow it.) Keyboard and Gamepad Input are handled via OpenTK 3, but the macOS implementation doesn't seem to work correctly on Catalina. The next version (OpenTK 4) is not released or ready, and they don't want to fix bugs in OpenTK 3 or release new versions of that. I don't even know if anyone has reported keyboard being broken. Ideally I would have fixed it myself in my fork of OpenTK 3, but their implementation of keyboard is low level and doesn't give me access to the native macOS keyboard API and I don't really want to try and solve that. Instead of I've re-implemented keyboard input from scratch using the native API and kind of hacked it into BizHawk from the outside. This is not a good solution, but I finally have it working. My plan over the next few weeks is to release 2 builds. A 64-bit port of 1.13.2, with all of the cores that were previously supported, and a new 'beta' build of BizHawk 2, with whatever works at the time. 1.13.2 is working, including some native cores like Genesis / MegaCD. I need to get all of the previously supported cores built as 64-bit and hook those up, then I will release a build. Following that, 2.0 can come at some point. Some things fixed so far since the last "alpha" build I posted: 1. Works on Catalina 2. Controller config works 3. Dark mode on Mojave and Catalina is supported. 4. Doesn't crash when you exit.
Joined: 3/11/2012
Posts: 149
Location: WI
Here's a macOS build of 1.13.2. Compatible with macOS Catalina. https://projects.sappharad.com/bizhawk_mac/BizHawk_mac64_1.13.2.dmg Note: Unlike the last several releases, this build is not signed. And it's not notarized either. You'll need to right click -> Open the first time you run it to bypass Gatekeeper. I could have gone through the steps to try, but it would have taken some extra time and I might end up doing another build if we can fix SNES. All systems supported by the macOS release of 1.13.1 should be supported here, including PSX, MegaDrive / Sega CD, NES, GBA, Wonderswan, etc. SNES runs, but you won't see any video for it, just sound. It's a side effect of porting to 64-bit that I couldn't figure out how to fix and I don't really care to try more right now. It sounds like there's been a lot of progress on the Linux port recently, so maybe that will help get a full build of 2.0 running. In the meantime, this is at least something. Enjoy?
Lobsterzelda
He/Him
Skilled player (1255)
Joined: 3/17/2019
Posts: 282
Sappharad wrote:
Here's a macOS build of 1.13.2. Compatible with macOS Catalina. https://projects.sappharad.com/bizhawk_mac/BizHawk_mac64_1.13.2.dmg In the meantime, this is at least something. Enjoy?
Thanks for taking the time to make this. It looks like a good start towards getting BizHawk to work on MacOS. From testing out this version of BizHawk on my Mac on Catalina, I did find the following errors that I wanted to bring up, in case you hadn't found them yet. 1. Atari 2600 games won't load on this version. More specifically, they cause a NullReferenceException to be thrown. The exact error message begins "System.NullReferenceException: Object reference not set to an instance of an object at BizHawk.Common.SettingsUtil.CreateSetter(System.Type t) ...". I tested this for the games Pitfall!, RoadRunner, and Adventure and all 3 couldn't load. 2. Trying to load the trace logger while playing an NES game causes BizHawk to violently crash with an exception. 3. Trying to open up TASStudio to create a movie for an NES game also causes BizHawk to violently crash. However, it is possible to play back movies which have already been recorded without the emulator crashing, so that's a plus.
Joined: 3/11/2012
Posts: 149
Location: WI
Lobsterzelda wrote:
Thanks for taking the time to make this. It looks like a good start towards getting BizHawk to work on MacOS. From testing out this version of BizHawk on my Mac on Catalina, I did find the following errors that I wanted to bring up, in case you hadn't found them yet. 1. Atari 2600 games won't load on this version. More specifically, they cause a NullReferenceException to be thrown. The exact error message begins "System.NullReferenceException: Object reference not set to an instance of an object at BizHawk.Common.SettingsUtil.CreateSetter(System.Type t) ...". I tested this for the games Pitfall!, RoadRunner, and Adventure and all 3 couldn't load.
Here's a new macOS build with the arbitrary version number of 1.13.4 which doesn't really match any PC releases. Compatible with macOS Catalina. https://projects.sappharad.com/bizhawk_mac/BizHawk_mac64_1.13.4.dmg It is code signed and notarized now, so you don't need to use any tricks to run it. Be sure to copy it out of the disk image first through, it can't load roms from inside because settings are saved inside the app bundle. Changes: 1. It fixes Atari 2600 which you noted was broken. 2. It also backported a handful of changes to Genesis Plus GX, some of which aren't even in the current BizHawk 2.0 windows release. These fixes are needed to run Esrael's Sonic Delta 40mbit romhack and SRAM support is working as well. There were some other random games that got fixed as well, I basically just grabbed the latest versions of some files needed to get Sonic Delta working & merged other changes that were needed for the files I grabbed to build. In other words, some new things are there and others are not. It's a grab bag. 3. It removes the dependency on Nvidia's cgc, which was wasting 27MB inside the download. I got rid of this because it was preventing me from code signing, because it's built for such an old OS version and hasn't been updated in 8 years, but then didn't end up trying to code sign again. SNES is still acting weird and unplayable. The other bugs are not fixed. ==== At this point Microsoft / Xamarin still has no plans to officially or unofficially support WinForms on 64-bit macOS, even with the upcoming .NET 5. I'm still stuck building modified forks of WinForms and OpenTK and heavily butchering the app to make it work with them. I know a bunch of work has gone into getting BizHawk 2.x to work on Linux, but I have not looked at those changes lately or had time to see if they would help some of the newer cores work on macOS. It's safe to say that work on the macOS port has stopped. If anyone wants to take over, let me know and I can go over the awkward and complicated work-arounds necessary to even get it to compile and run as a 64-bit application. (The OpenTK fork is on my GitHub) In the meantime, I may will pop in every once and awhile, but it will just be for random little things that I want to fix. In the event Apple switches future Macs to ARM processors, I'll see if I can provide an equivalent build of what I just released for those later, provided they don't remove even more outdated API's. (Example: I'm not even using OpenTK for keyboard input in the last 2 releases because it broke in Catalina and OpenTK isn't updating 3.x anymore)
TAG
He/Him
Joined: 2/9/2014
Posts: 407
Location: In Oblivion
looking forward to seeing this update. how did you know i was going to ask for an update version lmao. thank you once again Edit: i get an error saying that disck imagine is broken. have you copmiled this properly at all?
I’m sorry. Really I am... I am so sorry for what I did. Forgive me.
Joined: 3/11/2012
Posts: 149
Location: WI
TAG wrote:
Edit: i get an error saying that disck imagine is broken. have you copmiled this properly at all?
It is valid, I just downloaded and tested it. But I do see one problem I've ran into in the past: Apple makes disk images APFS by default on Catalina. If you're running a version of macOS that is too old for the APFS filesystem, (10.12 or older) then the image is seen as invalid. I have converted the image to MacOS Extended (HFS+) and re-uploaded it.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
Sappharad wrote:
At this point Microsoft / Xamarin still has no plans to officially or unofficially support WinForms on 64-bit macOS, even with the upcoming .NET 5. I'm still stuck building modified forks of WinForms and OpenTK and heavily butchering the app to make it work with them.
The future of our UI toolkit doesn't really look bright on any platform. Mono WinForms works on Linux x64 and well enough to host Bizhawk, but that's a completely dead product and Microsoft isn't putting anything into it. Even Mono itself seems pretty neglected except for AOT and WebAssembly -- they're pushing .NET Core for that. On Windows, we now have the old Winforms on .NET Core, but no commitment to maintain it from Microsoft either. Oh well.
TAG
He/Him
Joined: 2/9/2014
Posts: 407
Location: In Oblivion
probably might help if i updated my mac. so i will do so and then see if it allows me to run OSX hawk still coming up with an file corrupt error :EDIT i have copied out the contents file and pasted it inside an existing file. and it is running. but it has prominent crashes. okay no luck. i will just have to wait for a fixed copy to be made.
I’m sorry. Really I am... I am so sorry for what I did. Forgive me.
Joined: 9/12/2014
Posts: 539
Location: Waterford, MI
News about the linux port: saturnus runs better on ubuntu 20.04 than windows 10. On windows 10, it takes what feels like a minute to load. Plus some crash message that can be ignored and unresponsive. So yeah, linux wins in performance!
Joined: 3/11/2012
Posts: 149
Location: WI
TAG wrote:
okay no luck. i will just have to wait for a fixed copy to be made.
It's fixed now, for real this time. I replaced the file at the link above with a proper build and actually downloaded & tested it. It's also code signed & notarized by Apple now, so no gatekeeper work-arounds are required to run it. The previous build was not working because it was partially signed but I was having problems getting Apple's service to validate it so I gave up and released it without completing the process. I assumed the app would still work and just warn you that the signature was invalid, but instead it claims to be corrupt. What I should have done was remove the signatures from everything, but I didn't know that was the problem initially because it ran on my machine since it was built there. Going forward, if there ever is another release from me, this shouldn't be a problem. Lessons learned: (Note to self) 1. If distributing an unsigned build, make sure it's not signed. 2. Trying to manually re-sign a build after Visual Studio signs it breaks the app and it won't launch. To release a signed build, "Archive" it in Visual Studio, then open the organizer in XCode and use XCode to upload it to Apple's notary service. XCode will re-sign the entire archive for me prior to submission, and it doesn't break like when I do it manually. I used to code sign builds manually before the notary service was a thing, but I guess I don't need to do it manually anymore.
Post subject: any new updates to bizhawk?
TAG
He/Him
Joined: 2/9/2014
Posts: 407
Location: In Oblivion
hi all. is there any new updates for bizhawk? i am keen to get bizhawk running again. i would love to see a workable version for the latest version of Mac <3
I’m sorry. Really I am... I am so sorry for what I did. Forgive me.
Post subject: Re: any new updates to bizhawk?
Joined: 3/11/2012
Posts: 149
Location: WI
TAG wrote:
hi all. is there any new updates for bizhawk? i am keen to get bizhawk running again. i would love to see a workable version for the latest version of Mac <3
I mentioned back in June 2020 that I had stopped working on it. No one else has expressed interest in taking that over: http://tasvideos.org/forum/viewtopic.php?p=496190#496190 I don't really have time to be looking at it again, but it's been long enough since I've touched it that I might want to re-fork the latest code and see what state it's in. The awkward situation with the user interface support on Mac hasn't changed since then, I've been subscribed to one of the GitHub threads about that. But as of the last time I checked (around 9 months ago) the awful approach that I was using before is still working. I also still get emails from the Issue tracker on GitHub, so I'm not entirely in the dark but I haven't really paid attention to what's going on at all for over a year now.
1 2
8 9