TASEmulators / BizHawk

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
http://tasvideos.org/BizHawk.html
Other
2.14k stars 380 forks source link

[Feature Request] WoA ARM64 Support (transition to .NET 5.0 and UWP). #2731

Open jonshipman opened 3 years ago

jonshipman commented 3 years ago

Looking over the project, a successful transition from .Net Standard 2.0 and Framework 4.8 into .Net Core 5.0 and dropping WinForms in favor of UWP would allow successful porting into WoA.

YoshiRulz commented 3 years ago

We won't be replacing WinForms when moving to .NET 5. If we do ever switch to another UI framework, it will probably be MAUI, which I assume will have ARM support.

edit 2021-07-16: WinForms in .NET 5 can now run natively in Windows on ARM.

see also #1415

nattthebear commented 3 years ago

Waterbox core support for Arm is theoretically possible, but a big ask of its own. Are we tracking that here too?

jonshipman commented 3 years ago

Looking through BizHawk source, it should be theoretically possible as well. First I'm reading about MAUI though, that sounds like a more plausible refactor path, as UWP would require a compete rewrite (as far as the WinForms components) in terms of needing to start a new VS project and copy code over.

InfamousKnight commented 2 years ago

bump for a more simple approach, you can try box64. It essentially emulates x86_64 architecture on arm. I don't think anyone tested bizhawk yet with it.

InfamousKnight commented 1 year ago

I tested this in box64. What hasher function is being used here?

YoshiRulz commented 1 year ago

What are you referring to? I don't see any mention of a hash function in box64's docs.

InfamousKnight commented 1 year ago

I'm referring to this. https://github.com/ptitSeb/box64/issues/506 It's on the bottom of the page.

YoshiRulz commented 1 year ago

Oh, the libbizhash error you posted in https://github.com/TASEmulators/BizHawk/issues/1430#issuecomment-1416395915. CPP already told you:

[...] even managed cores may use unmanaged x86-64 code (mostly blip_buf for audio resampling), and loading a rom means going through hashers which means loading in a x86-64 library, which will not work.

It's meant to fall back to an managed implementation if the CPU it's running on doesn't support accelerated instructions, but of course the detection code is also x86 so it can't run. You could build it for ARM, properly or with stubs, or have EmuHawk catch the lib load error and treat it as though the unmanaged call returned false.

InfamousKnight commented 1 year ago

Does anyone know how we can use mkbundle to run bizhawk? With this, we can run bizhawk without mono installed.

YoshiRulz commented 1 year ago

RTFM.

Please only use this thread to discuss Windows AArch64 support, which with .NET Framework 4.8.1 may end up being quite simple. (future humans: go to https:/<!---->/github.com/dotnet/core<!---->/issues/7709 for docs.) For Linux, I won't be supporting anything other than Mono for the time being, but if anyone is having trouble with Mono on AArch64 then I'll help where I can.