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.02k stars 372 forks source link

[🐧] GNU+Linux compatibility progress #1430

Open YoshiRulz opened 5 years ago

YoshiRulz commented 5 years ago

jump to known bugs

Overview:


As of 2.9.1, the following systems can be emulated:

These systems haven't been tested or aren't finished:


These features/subsystems work:

YoshiRulz commented 5 years ago

Issues with EmuHawk

Misc. issues:

Cores

Issues with Mupen

System.InvalidOperationException: got null pointer from dlopen, error: libmupen64plus.so.2: cannot open shared object file: No such file or directory (or, if standalone Mupen64Plus is installed, System.InvalidOperationException: got null pointer from dlopen, error: /usr/lib/mupen64plus: cannot read file data: Is a directory) from mupen64plusApi ctor --yoshi at 25a5449a4 fixed in https://github.com/TASEmulators/BizHawk/commit/6e46cb550b74d7152a9ba36bc3135ab399766094

Issues with TI83Hawk

Building and packaging

Dependencies are being recorded (so build scripts can be made) in the GitLab mirror's snippets. On multi-arch distros, target x86_64/amd64.

For the record I've mostly focused on Manjaro (which I use), Nix/NixOS, Linux Mint, and Ubuntu. --yoshi

Bus error (core dumped) when building may be because you're out of disk space.

libblip_buf works as intended on both OSes, but the Makefile for Linux builds was hacked together (see libblip_buf issue tracker) and using the library in BizHawk was intended to be a temporary hack. The library has been rewritten as noted in #1312. Sappharad has previously attempted moving it to managed C#. It may be possible to use libspeex instead. they serve different purposes according to https://github.com/TASEmulators/BizHawk/issues/3207#issuecomment-1090656324 --yoshi

Don't know where else to leave these:

nattthebear commented 5 years ago

For Gambatte et al, I do not think it will be that difficult to compile these cores for Bizhawk. The source code for the version that is used in Bizhawk is in the Bizhawk repo, and most/all of them are compiled with mingw right now, so don't have too many MSVCisms in them. You should give one a try.

For the waterbox cores, I think it shouldn't be too hard to write a version of MemoryBlock that works with linux APIs. I'm willing to give it a try if no one else is.

Sappharad commented 5 years ago

@Sappharad Could you please verify that A7800Hawk, C64Hawk, ColecoHawk, GBHawk, IntelliHawk, NesHawk, PCEHawk, SMSHawk, and ZXHawk work on macOS?

As of the last time I pulled changes from master, (January 1st) A7800, ColecoHawk, GBHawk, Gambatte, NESHawk, QuickNES, PCEHawk & SMS Hawk are currently working on macOS. I have not tested any other cores at this time, some will require preparations for me to use them as I have never used them. If you're asking about the latest code, I'll have to rebase tomorrow. Note that I also have a bunch of changes that differ from yours, but nothing on in the backend should be different so I'm not worried about C# cores not working.

alyosha-tas commented 5 years ago

Honestly, I can probably just remove the BG color setting from Atari2600. That BG color is outside of the frame, if anything it should be a global setting. Most other cores just set it to black with no option to change it.

YoshiRulz commented 5 years ago

@Sappharad So you had no issues building libblip_buf? And how did you get Gambatte and QuickNES working? Re: ZX Spectrum Asnivor told me how to use it

Asnivor commented 5 years ago

@alyosha-tas Changing background colour to a global setting may be problematic for the cores that do enable the user to set the colour. For example, ZXHawk has the ability to set this colour through it's options (as this was a feature request by someone in the past). However, the reflection related problems are not present as the choice of colours is limited to only the ones that the emulated machine can display (and it makes its journey through Settings as a simple integer lookup into the core's palette array)

image

Obviously cores that specifically manage this setting will automatically (and invisibly) override any new global background colour implementation. As long everyone is happy with this (somewhat counter-intuitive from a user-perspective) behavior, global should work.

YoshiRulz commented 5 years ago

@Asnivor to add to that, I suggested in #1380 to use an integer everywhere except actually drawing the background (which ZXHawk already does?), using Color.FromArgb(int) (MSDN).

Asnivor commented 5 years ago

@YoshiRulz yup, that will solve the issues. Unfortunately a lot of the cores use the auto-generated settings menus, so passing a Color reference gives you an easy color picker image

I guess the auto generated settings dialog can be modified to accept int values and then use Color.FromArgb. Thats probably the easiest solution (after removing the setting from problem cores entirely). ZXHawk is slightly different in that the integer it passes is never more than 15 (as this is the max number of colours that computer had and this is used to lookup a colour palette array in-core). But integer representations argb should work if someone wants to make that change.

nattthebear commented 5 years ago

Has anyone looked into the DefaultValue Color crash in detail? It doesn't seem like something that should be broken, and I've confirmed that [DefaultValue(typeof(Color), "Black")] does work in a basic mono repro.

Sappharad commented 5 years ago

@Sappharad So you had no issues building libblip_buf? And how did you get Gambatte and QuickNES working? Re: ZX Spectrum Asnivor told me how to use it

I had already ported them a couple years ago in the mono-portable branch. It was just a matter of copying the old Xcode projects from the mono-portable branch and switching them to x64. Anything I've done before I've been slowly grabbing pieces from the branch and re-implementing in my fork. In some cases it differs from your approach and I've just been keeping mine. Keyboard for example, you built a massive mapping between SlimDX and OpenTK, but I don't even reference SlimDX in mine because that reference is conditional to Windows so the mono build acts like it's not even there. Then I just use the OpenTK Keyboard enum directly. (And there's a separate default mappings file for OpenTK where I just did a find/replace on the key names that differ like Keys.Return becomes Keys.Enter instead)

I'll try to rebase later today and test again, but I'd say don't worry about it too much because if it works for you I'm not worried about it working for me.

Oh, actually, there's one thing you need to change once you have a QuickNES build for Linux if you want it to work. You need to conditionally take out the calls for the Windows floating point mode hack. I tested it several years ago, natt or someone explained what bug that was there to fix and I found the bug didn't occur at all macOS. So there wasn't a need to replicate whatever that does. Example is here: https://github.com/Sappharad/BizHawk/commit/2bcc54686f36f93ee372c78f1036cfd03a4a72e8#diff-a9975d57b1522ccb872d9e6dc6f1f171 Note that this won't work for you as-is, because you've been using runtime checks everywhere for platform while I do it as preprocessor directives, but you can do something similar your way. Note that if you'd rather use the preprocessor directives for this case that some of the projects like BizHawk.Client.Common have a WINDOWS define hard-coded in the project settings instead of being conditionally defined for Windows only. Those are also fixed on my end and I can probably do a diff and tell you which ones are broken.

Asnivor commented 5 years ago

@nattthebear

Has anyone looked into the DefaultValue Color crash in detail? It doesn't seem like something that should be broken, and I've confirmed that [DefaultValue(typeof(Color), "Black")] does work in a basic mono repro.

So i've had a rum ol' time time of spinning up a linux vm, installing mono, building bizhawk and attempting to debug in the buggy shitshow that IS MonoDevelop.

The line where it all goes wrong is here: https://github.com/TASVideos/BizHawk/blob/7ff08fb63e4f96cb55ba4c481d59c2dc0a6fbde9/BizHawk.Common/SettingsUtil.cs#L65

In Windows, PropertyInfo.GetCustomAttributes(true) successfully returns the System.Drawing.Color value:

image

In Mono however, the same PropertyInfo method fails to return the System.Drawing.Color value:

image

To my untrained eye, both PropertyInfo objects appears to have much of the correct info:

image

image

However the locals window in monodevelop doesn't provide a lookup into the CustomAttributes IEnumerable (for whatever IDE-centric reason).

I suspect this is all some issue/edge case with the way Mono handles reflection, but I really don't know enough to go much deeper..GetCustomAttributes() is working fine in Mono for attribute values that do not involve the possible 'double reflection' that this BackgroundColor property does.

So yeah, not sure what else I can try...

nattthebear commented 5 years ago

I tried the following small example against mono and .net and it worked against both of them. I wonder what's different in the full case? Not sure what you mean about "double reflection".

class Foo
{
    [System.ComponentModel.DefaultValue(typeof(System.Drawing.Color), "Black")]
    public System.Drawing.Color Bar { get; set; }
    static void Main()
    {
        var prop = typeof(Foo).GetProperty("Bar");
        var attr = (System.ComponentModel.DefaultValueAttribute)prop.GetCustomAttributes(true)[0];
        var value = attr.Value;
        if (value == null)
        {
            System.Console.WriteLine("value is null");
        }
        else if (value.GetType() != typeof(System.Drawing.Color))
        {
            System.Console.WriteLine("type is " + value.GetType());    
        }
        else
        {
            System.Console.WriteLine("color is `" + value + "`");
        }
    }
}
Asnivor commented 5 years ago

Hmmm.

image

Issue is there for me with your code. Are you running Mono on windows or linux?

If it matters, I am running:

IIRC, @YoshiRulz was seeing the same issue on Arch linux

YoshiRulz commented 5 years ago

@nattthebear I'm also getting "value is null" on Manjaro w/ Mono, Mono VB.NET: o noes

~$> mono --version
Mono JIT compiler version 5.16.0 (makepkg/bb3ae37d71a Sat Dec  8 13:21:35 CET 2018)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none
        Misc:          softdebug 
        Interpreter:   yes
        LLVM:          supported, not enabled.
        GC:            sgen (concurrent by default)
~$> yay -Qi mono-basic | head -n2
Name            : mono-basic
Version         : 4.7-1
~$> lsb_release -a
LSB Version:    n/a
Distributor ID: ManjaroLinux
Description:    Manjaro Linux
Release:        18.0.2
Codename:       Illyria
Asnivor commented 5 years ago

Right @nattthebear is going to check his end again today, but if there is a discrepancy lets maybe lets get some version details in here just in case this is something we think about raising with Mono.

For me:

~$ mono --version
Mono JIT compiler version 5.18.0.255 (tarball Wed Jan  2 21:21:16 UTC 2019)
    TLS:        __thread
    SIGSEGV:    altstack
    Notifications:  epoll
    Architecture:   amd64
    Disabled:   none
    Misc:       softdebug
    Interpreter:    yes
    LLVM:       yes(600)
    Suspend:    preemptive
    GC:     sgen (concurrent by default)
~$ lsb_release -a
No LSB modules are available
Distributor ID: Debian
Description:    Debian GNU/Linux 9.6 (stretch)
Release:    9.6
Codename:   stretch
nattthebear commented 5 years ago

image

nattthebear commented 5 years ago

Filed https://github.com/mono/mono/issues/12362

Asnivor commented 5 years ago

Ok. So i guess LVVM could be the difference here. Or the older version of mono. Or both. I'll see whether i can disable lvvm tomorrow and test again.

nattthebear commented 5 years ago

@YoshiRulz had LLVM supported but not enabled and got the same issue; so I'm betting on a classlib regression in the later mono.

lsthiros commented 5 years ago

@YoshiRulz Hi All. I figure that I owe some form of explanation for the work that I completed about a year ago. My motivation for porting the lua interface to Mono compatible systems was to replicate the MarI/O experiment on my MacBook. The main compatibility issue arose from the use of a Managed C++ (a now-deprecated Embrace Extend Extinguish ploy from Microsoft to provide C# interoperability) DLL that contained the Lua engine.

My solution was to keep the C based lua implementation but switch the Managed C++ interface to the platform agnostic P/INVOKE interface. I automated this process by using SWIG to generate the interface, and modified other portions within bizhawk itself.

As a matter of practice, I don't like to release software without having it adequately tested. All of my manual testing cases succeeded, but I could not find a way to automate the testing in a way that worked with the core software. (Further, I could not resist the scope creep of trying to find a line coverage mechanism, but Microsoft has recently added that capability to DotNet Core).

Ultimately, I found that there were no performant GBA cores available for MacOs at the time. Further I had to abandon the project in lieu of degree/job/etc.

As of now, I cannot reasonably commit to a timeline, but if somebody does have time sensitive needs, I would be willing to sync up with them on how to go forward.

YoshiRulz commented 5 years ago

Virtu may or may not work in branch unix_morecompat_temp (= MoreUnixMonoCompatWork) if you know how to use an Apple II (because we don't).

edit: changed branch name

YoshiRulz commented 5 years ago

Edit: had kill $(ps ...) one-liner here, no longer necessary

Asnivor commented 5 years ago

I worked out how to kill EmuHawk (and mono) dead from within BizHawk the other day, but this happened before the disposal processes had started/completed. We should be able to track down where exactly to do this (with a bit more work) so that we can kill it if running on linux. I'll keep you updated.

*edit: Yup, seems to be working now as per https://github.com/TASVideos/BizHawk/pull/1441/commits/64b9e506f478635c019d55c6b808d23cf5e3970f

image

YoshiRulz commented 5 years ago

@Sappharad Have you had any experience with MoltenVK? If I get Vulkan working it might be easier to start over with that than to continue maintaining OpenGL, which I understand to be hard because of WinForms.

Sappharad commented 5 years ago

@Sappharad Have you had any experience with MoltenVK? If I get Vulkan working it might be easier to start over with that than to continue maintaining OpenGL, which I understand to be hard because of WinForms.

I do not, but it's supposed to be easy. OpenGL will still be easier, because with that I already had a reference implementation to borrow code for. With either one I still need to do a custom fork of the OpenTK WinForms control to use it on 64-bit macOS, so Vulkan ends up being more work. Either way, if you support it I'll probably end up trying to do an implementation anyway, since there are supposed to be benefits to Vulkan.

Asnivor commented 5 years ago

@Sappharad

Current progress is https://github.com/TASVideos/BizHawk/pull/1438 in case you missed it. Hopefully you can magic up your custom GLControl and it will just drop in.

YoshiRulz commented 5 years ago

In IRC, Sappharad mentioned the refactoring is finally done. edit: as of posting on 2019-04-30

YoshiRulz commented 4 years ago

The DefaultValueAttribute on Color nonsense seems to be resolved, mono --version gives 5.20.1 on my machine (previously broken on 5.16.0).

InfamousKnight commented 4 years ago

Testing on my part, and Record movie crashes when using Gbhawk: url edit: backwards --yoshi

I do like where this is going though!

YoshiRulz commented 4 years ago

That looks like this, which might mean it's unrelated to the input recording feature. Still don't know what the actual problem is though.

Also markdown cheetsheet, I'm guessing you hit the link button in the comment box.

InfamousKnight commented 4 years ago

Hit link button in comment box?

Do you know of a solution for this input recording crash?

On Thu, Aug 15, 2019 at 11:03 PM James Groom notifications@github.com wrote:

That looks like this https://github.com/TASVideos/BizHawk/pull/1438#issuecomment-502440198, which might mean it's unrelated to the input recording feature. Still don't know what the actual problem is though.

Also markdown cheetsheet https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet, I'm guessing you hit the link button in the comment box.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/TASVideos/BizHawk/issues/1430?email_source=notifications&email_token=AAT4W4NKPTY3EC3MNG5XALTQEYKIPA5CNFSM4GONLVV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4NRCRY#issuecomment-521867591, or mute the thread https://github.com/notifications/unsubscribe-auth/AAT4W4MVUJPG4OQXSEXYGJDQEYKIPANCNFSM4GONLVVQ .

YoshiRulz commented 4 years ago

this button Screenshot_20190816_152304 unhelpfully writes [](url), links in Markdown are [label](anchor-or-address)


I don't know where the actual error is, let alone the solution. I haven't actually tried debugging since my distro updated Mono, the new version might not crash immediately. If that works (and I can fix the problem) I'll @ you.

YoshiRulz commented 4 years ago

New macOS requires extra crypto for executables.

@Sappharad these might help: Customizing the Notarization Workflow, Build, Notarize, Repeat, Getting Ready for macOS’s Hardened Runtime and Notary

Sappharad commented 4 years ago

Don't worry, notarization is the least of my problems. I've been notarizing my apps for the last year. WinForms is still not officially supported on 64-bit macOS, and I'm still busy working around bugs in the alternate implementation that I've been using.

InfamousKnight commented 4 years ago

I'm still having troube loading anything:

this error occured after following this I did append the 4th line with x86_64-linux-gnu as I'm running ubuntu 19.10 and this error showed up when loading a gbc rom with gbhawk: Gtk-Message: 11:08:18.992: Failed to load module "canberra-gtk-module" i965: Failed to submit batchbuffer: Invalid argument AL lib: (EE) alc_cleanup: 1 device not closed

And after that it just closes

YoshiRulz commented 4 years ago

Halfway through downloading Ubuntu image... In the meantime, could you check if the bug you reported above is still present (recording input movie causes NRE in MainForm)?

InfamousKnight commented 4 years ago

Right now I cant because I have to work the whole day...

But I do appreciate your help.

On Mon, Nov 4, 2019, 12:55 PM James Groom notifications@github.com wrote:

Halfway through downloading Ubuntu image... In the meantime, could you check if the bug you reported above is still present (recording input movie causes NRE in MainForm)?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/TASVideos/BizHawk/issues/1430?email_source=notifications&email_token=AAT4W4OJA4CJHFCVKKRWYFTQSBOY3A5CNFSM4GONLVV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDAEOUA#issuecomment-549472080, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAT4W4MNHTWW3U6PYR5SOWTQSBOY3ANCNFSM4GONLVVQ .

InfamousKnight commented 4 years ago

Further testing tonight, I tried running EmuHawk.exe from the terminal, and a long list of things showed up on the terminal and bizhawk opened with a blank black screen and eventually crashed. I also can't test record movie unless I have a rom loaded(which is what I'm having trouble with so far).

Before I was runnning the shell script, and that seems the most functional right now. If I try to change the display option and press ok, it crashes bizhawk.

Have you found anything?

YoshiRulz commented 4 years ago

I think I've reproduced everything. In the process I learned how out-of-date our Linux docs are...

Rename (or use symlinks) /usr/lib/x86_64-linux-gnu/libblip_buf.so.1.1.1 to /usr/lib/x86_64-linux-gnu/libblip_buf.so - tested NesHawk, GBHawk, and VBA-Next. This needs to be looked into because both names should work. Install libcanberra-gtk-module - only hides the "Gtk-Message" warning, does not appear to affect rendering. I think the bug that broke recording was since fixed, probably by #1438.

InfamousKnight commented 4 years ago

I looked for libbluff.so.1.1.1 to rename it but it seems it was already libbluff.so . Hower in usr/lib there also exist a libbluff.so so Im not sure if that duplicate is causing the issue.

Btw, gbhawk is still not loading anything. its still giving me the same errors.

YoshiRulz commented 4 years ago

Does dpkg --verify libc6-dev libopenal1 mono-devel mono-vbnc nvidia-cg-toolkit print anything?

InfamousKnight commented 4 years ago

No, it didn't print anything.

On Tue, Nov 5, 2019 at 11:40 AM James Groom notifications@github.com wrote:

Does dpkg --verify libc6-dev libopenal1 mono-devel mono-vbnc nvidia-cg-toolkit print anything?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/TASVideos/BizHawk/issues/1430?email_source=notifications&email_token=AAT4W4ICGFKDNFIEIMGSGALQSGOZBA5CNFSM4GONLVV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDDLW4I#issuecomment-549895025, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAT4W4J6KU7OPDVLPFESCFDQSGOZBANCNFSM4GONLVVQ .

YoshiRulz commented 4 years ago

i965: Failed to submit batchbuffer: Invalid argument might be caused by iGPU drivers? Try changing the Config > Display... > Display Method, updating your ucode (intel-microcode), or DRI_PRIME=0 ./EmuHawkMono.sh if you have an NVIDIA GPU.

InfamousKnight commented 4 years ago

My gpu is intel uhd 620

On Tue, Nov 5, 2019, 12:51 PM James Groom notifications@github.com wrote:

i965: Failed to submit batchbuffer: Invalid argument might be caused by iGPU drivers? Try changing the Config > Display... > Display Method, updating your ucode (intel-microcode), or DRI_PRIME=0 ./EmuHawkMono.sh if you have an NVIDIA GPU.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/TASVideos/BizHawk/issues/1430?email_source=notifications&email_token=AAT4W4NRU2AVWHWDXPFNRD3QSGXC7A5CNFSM4GONLVV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDDWCXI#issuecomment-549937501, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAT4W4O72RAIZNP6I57AUH3QSGXC7ANCNFSM4GONLVVQ .

InfamousKnight commented 4 years ago

Another update: If I load gamebatte or vbanext, it will claim the dlls are not there and when I press ok, it doesn't crash bizhawk.

And where do I find this ucode at?

InfamousKnight commented 4 years ago

Few updates over, I tried updating my intel-micro, but it said it ws up to date. And I also took another screenshot of what happens when I load a gba game like stuntman.

YoshiRulz commented 4 years ago

This is really weird. The libraries just sit in output/dll from when you clone. Does sha1sum output/dll/libvbanext.dll print 1c599e4b4e6a1740e962641ffe95b63175ffb974?

BTW the Gambatte port isn't actually finished.

InfamousKnight commented 4 years ago

Yeah, it prints that. However, I don't have an output folder and if I manually build it, it might solve the problem. But I don't know where to get msbuild at. I have dotnet installed on my linux machine, but that one PR hasn't been merged yet.

On Wed, Nov 6, 2019 at 2:05 AM James Groom notifications@github.com wrote:

This is really weird. The libraries just sit in output/dll from when you clone. Does sha1sum output/dll/libvbanext.dll print 1c599e4b4e6a1740e962641ffe95b63175ffb974?

BTW the Gambatte port isn't actually finished.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/TASVideos/BizHawk/issues/1430?email_source=notifications&email_token=AAT4W4PRUQSZRARXCUQEFTLQSJUEPA5CNFSM4GONLVV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDFQIZY#issuecomment-550175847, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAT4W4M4MCSBINALQJXQCKLQSJUEPANCNFSM4GONLVVQ .

YoshiRulz commented 4 years ago

All as root:

echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" >/etc/apt/sources.list.d/mono-official-stable.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
apt update && apt install msbuild
InfamousKnight commented 4 years ago

And I got this error: +ubuntu1804b1_all.deb ... Found old XBuild tools directory, moving out of the way Unpacking msbuild (1:16.3+xamarinxplat.2019.08.08.00.55-0xamarin2+ubuntu1804b1) ... dpkg: error processing archive /var/cache/apt/archives/msbuild_1%3a16.3+xamarinxplat.2019.08.08.00.55-0xamarin2+ubuntu1804b1_all.deb (--unpack): trying to overwrite '/usr/lib/mono/xbuild/15.0', which is also in package mono-xbuild 5.18.0.240+dfsg-3 Errors were encountered while processing: /var/cache/apt/archives/msbuild_1%3a16.3+xamarinxplat.2019.08.08.00.55-0xamarin2+ubuntu1804b1_all.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

maybe I should just wait for that one pr to be merged so I can manually compile it?

On Wed, Nov 6, 2019 at 8:58 AM James Groom notifications@github.com wrote:

All as root:

echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" >/etc/apt/sources.list.d/mono-official-stable.list apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF apt update && apt install msbuild

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/TASVideos/BizHawk/issues/1430?email_source=notifications&email_token=AAT4W4MCWJBRVTZVCRAXIDDQSLERFA5CNFSM4GONLVV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDGTUTQ#issuecomment-550320718, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAT4W4O5UUQM2GLZC56OPEDQSLERFANCNFSM4GONLVVQ .