Skip to content

[🐧] More Linux/Mono Compatibility Work #1438

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 35 commits into from
Nov 3, 2019
Merged

Conversation

Asnivor
Copy link
Contributor

@Asnivor Asnivor commented Jan 10, 2019

TODO rewrite this checklist, removing things that were committed to master in the interim

Progress

  • Resolving Assemblies
    • AssemblyResolve - find .NET DLLs not in the executing directory (39afe3e)
    • Microsoft.VisualBasic namespace should be usable in Mono (1be2738)
    • SevenZipSharp assembly exception (need to remove SevenZipSharp) (Asnivor@e76df27)
  • Misc UI related stuff
    • Menubar mnemonics (disabled on unix to prevent a crash caused by a WinForms reflection hack) (Asnivor@632768d)
    • Path settings throwing exceptions and getting non-relative paths when setting through the folder browser dialog (Asnivor@dccaa2b & Asnivor@519e114)
  • ToolBox
    • Opens with NullHawk (39afe3e and I think 42b5931)
    • Opens with core loaded
  • Archive Handling
    • Replace SevenZipSharp with .NET native SharpCompress for mono (Asnivor@e76df27)
    • Check implementation also works on Windows (yes, but currently not wired up)
  • Sound
  • Video (Asnivor@196d51d)
    • OpenGL support (using latest OpenTK)
    • Fix display preferences so that unix users can choose either OpenGL or GDI+
  • Firmware options
    • Mitigate exception raised when attempting to open a non-existing firmware folder (Asnivor@f01f0fa)
  • Multi-disk Bundler
    • Handled crash due to GetRelativePath calls using Win32 native functions, resulting in mono trying to reference shlwapi.dll (and failing). Means that you can never generate a bundler xml file (Asnivor@ebd94a8)
    • Exceptions in PathConfig.cs due to linux filesystem (Asnivor@5aaa914)
  • Controllers
    • (Re)Wire up 'OTK_GamePad' (Asnivor@2fe818c)
    • Re-write OpenTK GamePad/Joystick implementation so fully working on linux (note: some controllers require a little axis or button input as EmuHawk starts - otherwise OpenTK does not detect them at initialization) (Asnivor@e483c94)
    • Tested and working on Windows also (although not currently wired up)
  • TAStudio
    • Re-write InputRoll to use GDI+ renderering on linux (rather than the Win32 native GDI calls that wont work)
    • Make GDI+ InputRoll rendering available on Windows as well (via a TAStudio option stored in Global.Config)
  • VirtualListView - this custom control uses Win32 native calls in it's virtual listview implementation. This causes all BizHawk components that use this control to not show anything in the listbox (or crash). These components are as follows (and require serious work):
    • CDL
      • Exception on opening
    • Cheats
    • GenericDebugger & BreakpointControl
      • Opens without exception
      • VirtualListView control does not update
    • LuaConsole
      • Opens without exception
      • Can load and run lua scripts
      • VirtualListView control does not update
    • LuaFunctionsForm
    • UndoHistoryForm
    • Tracelogger
      • Opens without exception
      • Log to files
      • VirtualListView control does not update Replaced with PlatformAgnosticVirtualListView
    • RAMSearch
      • VirtualListView control does not update
    • RAMWatch
      • VirtualListView control does not update
    • PlayMovie
  • Vulkan renderer but it's actually a copy of OpenGL - [Waiting on upstream] Vulkan renderer #1468
  • Remove the last references to WINE bundled libraries
  • Do OS check properly (macOS enum constant is never used, check uname -s for Darwin instead)
  • Cores Working
    • NullHawk
    • .NET Native
      • A7800Hawk
      • Atari2600Hawk
      • C64Hawk
      • ColecoHawk
      • GBHawk
      • IntelliHawk
      • NesHawk
      • PCEHawk
      • SMSHawk
      • TI83Hawk
      • Virtu
      • ZXHawk
    • C/C++
      • BSNES
      • Gambatte
      • Handy
      • mGBA
      • Mupen64Plus
      • Octoshock
      • QuickNes
      • VBA-Next
      • Cygne
    • WaterBox
      • Genplus-gx
      • NeoPop
      • SameBoy
      • Saturnus
      • Snes9x
      • VirtualBoyee

@Asnivor Asnivor self-assigned this Jan 10, 2019
@Asnivor

This comment has been minimized.

@YoshiRulz

This comment has been minimized.

@Asnivor

This comment has been minimized.

@YoshiRulz

This comment has been minimized.

@Asnivor

This comment has been minimized.

@YoshiRulz

This comment has been minimized.

@Asnivor

This comment has been minimized.

@Asnivor Asnivor changed the title [WIP] More Linux/Mono Compatibility Work [WIP][🐧] More Linux/Mono Compatibility Work Jan 12, 2019
@Asnivor Asnivor added the re: Multiplatform Relating to porting to Linux (or macOS, etc.), or porting to other host architectures label Jan 17, 2019
YoshiRulz added a commit that referenced this pull request Jan 26, 2019
@YoshiRulz

This comment has been minimized.

@YoshiRulz
Copy link
Member

YoshiRulz commented Feb 2, 2019

NES, FDS, SNES, SMS, Game Gear, PCE/TG16, Atari 2600, Atari 7800, Atari Lynx, ColecoVision, Genesis/MegaDrive, Sega CD, Gameboy, Gameboy Color, GBA, Wonderswan are all supported.

-- Sappharad re: macOS fork, Jan 2018

What we're aiming for.

edit: he said on IRC that PSX now works too

@YoshiRulz
Copy link
Member

should probably dig #93 out of the attic

@Asnivor
Copy link
Contributor Author

Asnivor commented Feb 15, 2019

Is that still even relevant?

@YoshiRulz

This comment has been minimized.

@YoshiRulz

This comment has been minimized.

@YoshiRulz
Copy link
Member

YoshiRulz commented May 9, 2019

.NET Core 3.1 is set to release in November (an outline of .NET Core's future is in #1415 (comment)), so if we port as much of the codebase as possible before then, we can put all our effort into migrating to .NET Core.

@YoshiRulz
Copy link
Member

Fullscreen isn't centered, and alt+enter from fullscreen leaves the window maximised (instead of at 3x or whatever View > Window Size is set to).

@YoshiRulz YoshiRulz force-pushed the MoreUnixMonoCompatWork branch from 0af5053 to ada256b Compare October 25, 2019 12:09
This doesn't compile because of Input.cs, didn't know what to do. Also search for Merge TODO for some commenting things that probably need to be deleted
# Conflicts:
#	BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
#	BizHawk.Client.EmuHawk/CustomControls/InputRoll.Drawing.cs
#	BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs
#	BizHawk.Client.EmuHawk/Program.cs
#	BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
#	BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
#	BizHawk.Client.EmuHawk/tools/ToolHelpers.cs
#	BizHawk.Client.EmuHawk/tools/ToolManager.cs
#	BizHawk.Client.EmuHawk/tools/TraceLogger.Designer.cs
#	BizHawk.Client.EmuHawk/tools/TraceLogger.cs
#	BizHawk.Client.EmuHawk/tools/Watch/RamSearch.Designer.cs
#	BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
#	BizHawk.Common/BizInvoke/DynamicLibraryImportResolver.cs
@YoshiRulz YoshiRulz force-pushed the MoreUnixMonoCompatWork branch from 6c7653e to 6bcb54a Compare November 1, 2019 00:06
@YoshiRulz YoshiRulz force-pushed the MoreUnixMonoCompatWork branch from 6bcb54a to c6dff68 Compare November 1, 2019 00:43
@InfamousKnight
Copy link

Downloading the appveyor build on my ubuntu v19.10 64 bit machine and I don't see any EmuHawkMono.sh I also don't know where to get MSbuild so I downloaded the appveyor one.

@YoshiRulz
Copy link
Member

@InfamousKnight AppVeyor artifacts don't include everything from output, we'll add the script to the list eventually. For now you can use the copy at master (it hasn't changed).

adelikat added 2 commits November 3, 2019 12:55
# Conflicts:
#	BizHawk.Client.EmuHawk/Program.cs
#	BizHawk.Common/BizInvoke/MemoryBlock.cs
@adelikat adelikat merged commit e4e1064 into master Nov 3, 2019
@YoshiRulz YoshiRulz changed the title [WIP][🐧] More Linux/Mono Compatibility Work [🐧] More Linux/Mono Compatibility Work Nov 4, 2019
@nattthebear nattthebear deleted the MoreUnixMonoCompatWork branch June 15, 2020 11:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
App: EmuHawk Relating to EmuHawk frontend re: Multiplatform Relating to porting to Linux (or macOS, etc.), or porting to other host architectures
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants