emu-coop icon indicating copy to clipboard operation
emu-coop copied to clipboard

Mac support

Open mcclure opened this issue 6 years ago • 3 comments

My Windows machine is currently nonbooting and I am somewhat blocked on further emu-coop development until I either get the Windows machine fixed or get emu-coop running on mac. Mac support would be good anyway.

There are three options for getting emu-coop running on mac:

  1. snes9x: I have modified https://github.com/mcclure/snes9x-coop to get it to compile on OS X Sierra. Unfortunately I then encounter https://github.com/snes9xgit/snes9x/issues/216 . Snes9x is currently essentially abandonware on OS X and cannot open ROMs on OS X Sierra. The steps to getting snes9x-rr working would be: (a) alter the open ROM dialog to use Cocoa and not the deprecated, broken-on-Sierra Carbon API (b) add a Lua window.

  2. OpenEmu: The reason snes9x development has stopped on OS X is in part that the OS X users have all switched over to using OpenEmu with an snes9x core. There is an OpenEmu fork with Lua scripting support https://github.com/OpenEmu/OpenEmu/tree/luascripting but it looks to have gone the last 5 years without commits. The steps to getting OpenEmu working would be: (a) Get the OpenEmu Lua fork up to date with current OpenEmu (b) Get it working with the snes9x-rr core.

  3. BizHawk: I am not aware of a mac distribution of BizHawk, but since it's written in C# it could be easier to get that building on mac than the C-based emulators. BizHawk uses a different API for Lua scripting than snes9x/FCEUX so I'd have to adapt the emu-coop scripts to be compatible, but I've been meaning to do that anyway. The steps to getting BizHawk working would be (a) build a mac distribution of BizHawk (b) port emu-coop to BizHawk's API. Unfortunately I hear BizHawk's API is buggy.

  4. BSNES: There seems to be a mac version of BSNES and there are apparently versions of BSNES floating around with Lua support. Similar to BizHawk BSNES has its own API for Lua scripting, but I would like to support that at some point anyway. I do not know what getting BSNES working would entail.

Option (1) seems like probably the least work, but snes9x for mac uses several other VERY old APIs which I expect to break soon, so I feel like any work toward that would only last a year or two before it breaks again. I think I am currently leaning toward option (2), especially since if I had emu-coop working with OpenEmu that would work with many different emulator targets.

mcclure avatar Aug 23 '17 17:08 mcclure

You can open ROMs in snes9x on Sierra by dragging them into the Dock icon, or by associating ROM files with Snes9x.app. That might allow you to bypass needing to bother with (a) at least for now and focus on (b) exclusively.

Also FWIW the Windows version works pretty good in VMWare Fusion on a Mac.

kethinov avatar Aug 23 '17 17:08 kethinov

  1. 32-bit support is going away in about 13 months so the snes9x UI would need to be rewritten by then, which is definitely doable but annoying.

  2. Merging the Lua branch is basically impossible at this point but using it as a template for getting started with a new fork. The OpenEmu team seems amenable to having Lua scripting in their master build so that'll make maintenance easier.

Either option will involve some Cocoa UI work for the Lua window, but (2) definitely seems more sustainable long term.

tekgo avatar Aug 23 '17 19:08 tekgo

Decided to take a swing at basic Lua support based on the current version of OpenEmu: https://github.com/tekgo/openemu . It only prints to console for now but implementing most/all of the lua interface from SNES9x-rr should be doable. The OpenEmu cores are sandboxed in a helper app so it prints to console.app instead of the Xcode console.

tekgo avatar Aug 24 '17 20:08 tekgo