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.2k stars 385 forks source link

ARM (AArch64) Linux port discussion #4052

Open InfamousKnight opened 1 month ago

InfamousKnight commented 1 month ago

So the only solution i can think of is using mkbundle to make it x86_64 build so you won't have to install mono.

The only other thing needed is box64. If you install mono on an arm64 machine, it will just install mono arm64 which won't work. It will load the program, but no roms will load.

So far I have managed to get bizhawk running on winlator for android, but it's not very stable. I have ways to run linux on android.

YoshiRulz commented 1 month ago

As I've told you before (https://github.com/TASEmulators/BizHawk/issues/2731#issuecomment-1473030238), it should "just work" if you have a AArch64 copy of Mono, and the same for any native libraries used by a core.

edit: As a workaround, you may also have some success with https://fex-emu.com/ (on macOS, https://mac.getutm.app/).

InfamousKnight commented 1 month ago

Oh, I didn't know it was that simple.. sorry

On Tue, Sep 24, 2024, 10:47 PM James Groom @.***> wrote:

As I've told you before (#2731 (comment) https://github.com/TASEmulators/BizHawk/issues/2731#issuecomment-1473030238), it should "just work" if you have a AArch64 copy of Mono, and the same for any native libraries used by a core.

— Reply to this email directly, view it on GitHub https://github.com/TASEmulators/BizHawk/issues/4052#issuecomment-2372780534, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAT4W4KXAZMDMO5A5HQHZV3ZYIP5ZAVCNFSM6AAAAABOZKYOB2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNZSG44DANJTGQ . You are receiving this because you authored the thread.Message ID: @.***>

InfamousKnight commented 1 month ago

c22f2ab4f5df93436a7513a54aaafb3fd5de6120

Retrying this with the same setup, and it crashes at startup with this message:

System.TypeInitializationException: The type initializer for 'BizHawk.Bizware.Graphics.ImGui2DRenderer' threw an exception. ---> System.DllNotFoundException: cimgui assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) BizHawk.Bizware.Graphics.ImGui2DRenderer.ImDrawListSharedData_ImDrawListSharedData()
  at BizHawk.Bizware.Graphics.ImGui2DRenderer..cctor () [0x00000] in <6943343e38fc431da513df9dd525dff5>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object.__icall_wrapper_mono_generic_class_init(intptr)
  at BizHawk.Bizware.Graphics.IGLExtensions.Create2DRenderer (BizHawk.Bizware.Graphics.IGL gl, BizHawk.Bizware.Graphics.ImGuiResourceCache resourceCache) [0x0000a] in <6943343e38fc431da513df9dd525dff5>:0 
  at BizHawk.Client.Common.DisplayManagerBase..ctor (BizHawk.Client.Common.Config config, BizHawk.Emulation.Common.IEmulator emulator, BizHawk.Client.Common.InputManager inputManager, BizHawk.Client.Common.IMovieSession movieSession, BizHawk.Bizware.Graphics.EDispMethod dispMethod, BizHawk.Bizware.Graphics.IGL gl, BizHawk.Bizware.Graphics.IGuiRenderer renderer) [0x00262] in <8aed7adcbd24456cb47ad9a31acf45af>:0 
  at BizHawk.Client.EmuHawk.DisplayManager..ctor (BizHawk.Client.Common.Config config, BizHawk.Emulation.Common.IEmulator emulator, BizHawk.Client.Common.InputManager inputManager, BizHawk.Client.Common.IMovieSession movieSession, BizHawk.Bizware.Graphics.IGL gl, BizHawk.Client.EmuHawk.PresentationPanel presentationPanel, System.Func`1[TResult] getIsSecondaryThrottlingDisabled) [0x00016] in <5707a324a080454ba4a87492040bbff0>:0 
  at BizHawk.Client.EmuHawk.MainForm..ctor (BizHawk.Client.Common.ParsedCLIFlags cliFlags, BizHawk.Bizware.Graphics.IGL gl, System.Func`1[TResult] getConfigPath, System.Func`1[TResult] getGlobalConfig, System.Action`1[T] updateGlobalSound, System.String[] args, BizHawk.Client.Common.IMovieSession& movieSession, System.Boolean& exitEarly) [0x002d4] in <5707a324a080454ba4a87492040bbff0>:0 
  at (wrapper remoting-invoke-with-check) BizHawk.Client.EmuHawk.MainForm..ctor(BizHawk.Client.Common.ParsedCLIFlags,BizHawk.Bizware.Graphics.IGL,System.Func`1<string>,System.Func`1<BizHawk.Client.Common.Config>,System.Action`1<BizHawk.Client.EmuHawk.Sound>,string[],BizHawk.Client.Common.IMovieSession&,bool&)
  at BizHawk.Client.EmuHawk.Program.SubMain (System.String[] args) [0x003c8] in <5707a324a080454ba4a87492040bbff0>:0 
YoshiRulz commented 1 month ago

I forget if that's used with every display method or just OpenGL, so you could try switching to the GDI+ display method. But I think you'll have to compile libcimgui.so. Or use a build without https://github.com/TASEmulators/BizHawk/commit/476ac94d801beecb284041b1b7c6d5518df0154b.

InfamousKnight commented 1 month ago

I managed to compile libcimgui but the same result happens..

I didn't really follow the instructions on the page, but what I did was: after using git to download the source files, I then changed directory into cimgui and made a new folder called build. Changed to that folder and then cmake.. followed by make.

And I tried to get an older build before the one you posted. Gitlab didn't have any files to download for it. I guess they expire to save storage..

CasualPokePlayer commented 1 month ago

You would also have the issue of SDL2 being used, which you would also need to compile.

cimgui is also somewhat fragile, you can't just plop in any version, it must be the same version as ImGui.NET expects (otherwise expect weird crashes due to mismatching ABI).

InfamousKnight commented 1 month ago

Oh yeah, I remember having to install libsdl because it wouldn't even open a window without it.

Seems this has gotten more complicated than I expected..

CasualPokePlayer commented 1 month ago

The system SDL2 will not be used (and generally cannot be used, there is no guarantee the system SDL2 is new enough). BizHawk will always use the vendored SDL2.

InfamousKnight commented 1 month ago

So what about sdl3?

CasualPokePlayer commented 1 month ago

No, that is completely incompatible (hence why it is "3" and not "2")

InfamousKnight commented 1 month ago

I see.

What are all the required dependencies for ubuntu linux? I feel like I'm missing something still..

YoshiRulz commented 1 month ago

Last I checked, libc6-dev and libopenal1 (which are both likely pre-installed) and mono-complete. Everything else is included with BizHawk and those are going to be what cause problems.

InfamousKnight commented 1 month ago

I guess a solution to this would be to install missing dependencies automatically? Libtas does that. If it can tell me what sort of dependency is missing, it should be able to download and install it.

YoshiRulz commented 1 month ago

You're describing a package as used by a package manager.

CasualPokePlayer commented 1 month ago

You already have any "missing dependencies" "installed." The issue is again native libraries that we vendor. These are libraries which you cannot install, they have to come with BizHawk. We only offer x64 builds. For us to actually "support" other platforms, we would need to provide native libraries for those other platforms, it would not be on the user. If you want to somehow get another platform working, you need to self-compile all these dependencies. These do not have instructions, as they are not supported, and they might end up failing to compile with our current scripts for all we know.

If you are incapable of figuring out how to self-compile all these dependencies (which frankly, we don't expect you nor any other user to be capable of such), then you should not try to get BizHawk working natively on a non-x64 platform. You should wait for whatever day we decide to support whatever other platforms users want to run BizHawk on and thus actually have builds for such platforms (that, or somehow try to run some x64 emulation setup, although that is likely going to work poorly; if anything, just get any x64 device if you really want to use BizHawk).

InfamousKnight commented 1 month ago

Yeah, well, at least we're not too far away from this.

Long story short, some IRL events happened that made my laptop kinda useless.

Thank you for trying to explain.

InfamousKnight commented 2 weeks ago

Update over here: It seems that android 13 supports kvm hypervisor. And root is required to use it.

So I'm afraid if this was to work on an android device, you would need root because of overprotective android.

Irrelevant note: got my x86_64 laptop working fixed. Very impressed by how much bizhawk has improved since 2.9.1.