Git Product home page Git Product logo

xnatofna's People

Contributors

0x0ade avatar flibitijibibo avatar rfht avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xnatofna's Issues

Crashing on Mac

I'm gettting this error when following all of the listed steps and running 'mono XnaToFna.exe'

OpenAL not found! Need FNA.dll.config? [ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: libopenal.1.dylib assembly:<unknown assembly> type:<unknown type> member:(null) at Microsoft.Xna.Framework.SDL2_FNAPlatform.CreateALDevice () [0x00017] in <977d36b13989433f88cdf1bdfc82f48c>:0 at Microsoft.Xna.Framework.Audio.AudioDevice.Initialize () [0x00038] in <977d36b13989433f88cdf1bdfc82f48c>:0 at Microsoft.Xna.Framework.FrameworkDispatcher.Update () [0x0000d] in <977d36b13989433f88cdf1bdfc82f48c>:0 at Microsoft.Xna.Framework.Game..ctor () [0x00108] in <977d36b13989433f88cdf1bdfc82f48c>:0 at XnaToFna.ContentHelperGame..ctor () [0x0000b] in <c1d3521dc7e94c43b430d28cc69450a3>:0 at XnaToFna.XnaToFnaUtil.UpdateContent () [0x00019] in <c1d3521dc7e94c43b430d28cc69450a3>:0 at XnaToFna.Program.Main (System.String[] args) [0x004bd] in <c1d3521dc7e94c43b430d28cc69450a3>:0

I'm using Mono JIT compiler version 6.6.0.155.

Why file suffix .xnb_? (Hints for CSTW)

After my success with Duck Game, I tried to run Cthulhu Saves the World on OpenBSD. mono XnaToFna.exe runs fine (after adjusting the FNA.dll.config), and I notice that it recodes the video/music files. However, when trying to start, I get:

[ERROR] FATAL UNHANDLED EXCEPTION: Microsoft.Xna.Framework.Content.ContentLoadException: Could not load asset Movies/CSTW_intro2! Error: The content file was not found. ---> Microsoft.Xna.Framework.Content.ContentLoadException: The content file was not found. ---> System.IO.FileNotFoundException: Could not find file

"/home/thfr/games/fna/xnatofna/cthulhu_saves_the_world/Cthulhu Saves the World/Content/Movies/CSTW_intro2.xnb"

and a 'find . -iname "*_" shows a few dozen files in Movies and Music directories with the xnb_ suffix.

Is it supposed to be like this? Am I missing something here?

Develop Steam-FNA (Codename Rhys)

As part of the Proton project, Steam now has a system set up for "compatibility tools", allowing games marked for one OS to run on another using an arbitrary program. The common case is Wine, but it is possible for other tools to run Windows-only depots, for example steam-dos:

https://github.com/dreamer/steam-dos

It should be possible to develop a compatibility tool that provides FNA (including FNA.NetStub and the ABI files) and XnaToFna. We can optionally provide the ability to convert WMA/WMV via a system FFmpeg installation.

The current WIP can be found here:

https://github.com/0x0ade/XnaToFna/tree/master/rhys

The checklist:

  • Build a standalone FNA runtime
    • FNA, FNA.NetStub, ABI files
    • XnaToFna
    • fnalibs (Just downloading these)
    • Mono with patches
  • Write rhys script
    • On first run, run XnaToFna in Windows Mode with no relinking
    • If wma/wmv detected, check for FFmpeg and convert at highest quality
    • Replace Steamworks.NET.dll with latest Unix Steamworks.NET.dll
      • Detect specific Steamworks.NET version, for robustness
    • Set MONO_IOMAP=all, MONO_PATH to FNA bins, LD_LIBRARY_PATH to fnalibs
    • Run the passed exe with mono

Note that this does NOT replace the Proton FNA work; many games will never be compatible with Steam-FNA due to C++/CLI binaries, really bad native interop in game engines, and so on.

Games of Interest (WMA/WMV/xWMA Included):

  • Apple Jack 1&2
  • Breath of Death VII
  • Cthulhu Saves the World
  • Explosionade
  • Game Type
  • Hell Yeah! Wrath of the Dead Rabbit
  • Lightfish
  • Mount Your Friends
  • One Finger Death Punch
  • Penny Arcade 3&4
  • Serious Sam: Double D XXL
  • Shoot 1UP
  • Super Amazing Wagon Adventure
  • Stardew Valley
  • Streets of Fury EX
  • Weapon of Choice

Blocked by Win32 Stuff:

  • DLC Quest
  • Lemma

Blocked by DInput:

  • Amazing Princess Sarah
  • Duck Game
  • Super Puzzle Platformer DX

Blocked by C++/CLI:

  • Aqua Kitty
  • Cloudberry Kingdom

Blocked by Who Knows

  • A.R.E.S. Extinction Agenda EX

Move to FNA.NetStub

Made a new stub DLL for the networking stuff, based on FNA.Steamworks:

https://github.com/FNA-XNA/FNA.NetStub

In addition to being cleaner than MonoGame.Net it's also more complete - it has 100% of the public-facing API and even the extensions I added to FNA.Steamworks!

Wave bank fatal error (non-negative number required) with several XNA games

Hi,

I've been trying XnaToFna out some lately and there is a repeated issue that showed up where XnaToFna aborts during [ContentHelper] [UpdateWaveBank]:

[XnaToFna] [ContentHelper] [UpdateWaveBank] Updating wave bank /home/thfr/games/fna/xnatofna/dlc_quest/DLC Quest/Content/base/audio/wb.xwb [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentOutOfRangeException: Non-negative number required. Parameter name: count at System.IO.BinaryReader.ReadBytes (System.Int32 count) [0x00016] in <d3b61d05e0d14bda9e0d978e561956eb>:0 at XnaToFna.XnaToFnaExt.ReadBytesUntil (System.IO.BinaryReader reader, System.Int64 position) [0x0000d] in <d78877a5c52c41829df4feaac055547e>:0 at XnaToFna.ContentHelper.UpdateWaveBank (System.String path, System.IO.BinaryReader reader, System.IO.BinaryWriter writer) [0x003fe] in <d78877a5c52c41829df4feaac055547e>:0 at XnaToFna.ContentHelper.PatchContent (System.String path, System.Action3[T1,T2,T3] patcher, System.Boolean writeToTmp, System.String pathOutput) [0x00053] in <d78877a5c52c41829df4feaac055547e>:0 at XnaToFna.ContentHelper.UpdateContent (System.String path, System.Boolean patchXNB, System.Boolean patchXACT, System.Boolean patchWindowsMedia) [0x00027] in <d78877a5c52c41829df4feaac055547e>:0 at XnaToFna.XnaToFnaUtil.<UpdateContent>b__62_0 () [0x0001f] in <d78877a5c52c41829df4feaac055547e>:0 at XnaToFna.ContentHelperGame.Initialize () [0x00023] in <d78877a5c52c41829df4feaac055547e>:0 at Microsoft.Xna.Framework.Game.DoInitialize () [0x0000d] in <8447c3557eec45c5911d5f3fef8fe117>:0 at Microsoft.Xna.Framework.Game.Run () [0x0000e] in <8447c3557eec45c5911d5f3fef8fe117>:0 at XnaToFna.XnaToFnaUtil.UpdateContent () [0x00057] in <d78877a5c52c41829df4feaac055547e>:0 at XnaToFna.Program.Main (System.String[] args) [0x0047f] in <d78877a5c52c41829df4feaac055547e>:0 AL lib: (EE) alc_cleanup: 1 device not closed

Occurs with:

  • DLC Quest
  • Dungeonmans
  • Useful Dead
  • One Finger Death Punch

If I remove the .xwb file before running XnaToFna and replace it later (unchanged), the following error occurs:

[ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Rebuild your WaveBanks with ADPCM!

Any thoughts on what might be causing this? Why there might be a negative number in the wrong place, with wavebank file?

Note: this is all on OpenBSD, but didn't strike me as something platform-related... if you feel otherwise I'll gladly try this on Ubuntu to see if the result is the same.

new build requirements?

Hi,

I understand that XnaToFna is a moving target right now, but I can't build the latest check out anymore and am wondering if I'm missing build system requirements if you guys still build it successfully.

The error seems to be related to langversion 7.3 not begin detected. Replacing those with 7.2 leads to a long list of other errors (let me know if you want to see a log of that).

Build System:

  • Ubuntu 18.04.1-x64 (no, it doesn't build on OpenBSD with xbuild either)
  • mono 5.14.0.177
$ msbuild XnaToFna.csproj
Microsoft (R) Build Engine version 15.1.8.0 ( Wed Sep  5 19:27:37 UTC 2018) for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 10/5/2018 9:15:09 PM.
Project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj" on node 1 (default targets).
PrepareForBuild:
  Creating directory "bin/Debug/".
  Creating directory "obj/Debug/".
Project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj" (1) is building "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/FNA.csproj" (2:2) on node 1 (default targets).
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
_CopyOutOfDateSourceItemsToOutputDirectoryAlways:
  Copying file from "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/FNA.dll.config" to "bin/Debug/FNA.dll.config".
CopyFilesToOutputDirectory:
  FNA -> /home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/bin/Debug/FNA.dll
Done Building Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/FNA.csproj" (default targets).
Project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj" (1) is building "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj" (3:2) on node 1 (default targets).
Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj" (3:2) is building "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj" (4:3) on node 1 (default targets).
CoreCompile:
  /usr/lib/mono/msbuild/15.0/bin/Roslyn/csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /highentropyva- /reference:/usr/lib/mono/2.0-api/mscorlib.dll /reference:/usr/lib/mono/2.0-api/System.Core.dll /reference:/usr/lib/mono/2.0-api/System.dll /debug+ /debug:portable /filealign:512 /optimize- /out:obj/Debug/MonoMod.Utils.dll /target:library /utf8output /langversion:7.3 ../MonoMod/Properties/AssemblyInfo.Common.cs DynamicMethodDefinition.cs DynamicMethodHelper.cs DynDll.cs Extensions.cs LimitedStream.cs ModInterop/ModExportName.cs ModInterop/ModImportName.cs MonoMod__OldName__.cs MonoModExt.cs Platform.cs PlatformHelper.cs Properties/AssemblyInfo.cs FastReflectionHelper.cs RelinkFailedException.cs RelinkTargetNotFoundException.cs StringInjectExtension.cs ModInterop/ModInteropManager.cs
CSC : error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values. [/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj]
Done Building Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj" (default targets) -- FAILED.
Done Building Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj" (default targets) -- FAILED.
Done Building Project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj" (default targets) -- FAILED.

Build FAILED.

"/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj" (default target) (1) ->
"/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj" (default target) (3:2) ->
"/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj" (default target) (4:3) ->
(CoreCompile target) -> 
  CSC : error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values. [/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.94
$ xbuild XnaToFna.csproj

>>>> xbuild tool is deprecated and will be removed in future updates, use msbuild instead <<<<

XBuild Engine Version 14.0
Mono, Version 5.14.0.177
Copyright (C) 2005-2013 Various Mono authors

Build started 10/5/2018 9:16:31 PM.
__________________________________________________
Project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj" (default target(s)):
	Target PrepareForBuild:
		Configuration: Debug Platform: AnyCPU
	Target ResolveProjectReferences:
		Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/FNA.csproj" (default target(s)):
			Target PrepareForBuild:
				Configuration: Debug Platform: x86
			Target CopyNonResxEmbeddedResources:
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/StockEffects/FXB/AlphaTestEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.AlphaTestEffect.fxb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/StockEffects/FXB/BasicEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.BasicEffect.fxb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/StockEffects/FXB/DualTextureEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.DualTextureEffect.fxb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/StockEffects/FXB/EnvironmentMapEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.EnvironmentMapEffect.fxb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/StockEffects/FXB/SkinnedEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.SkinnedEffect.fxb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/StockEffects/FXB/SpriteEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.SpriteEffect.fxb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/src/Graphics/Effect/YUVToRGBA/YUVToRGBAEffect.fxb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.YUVToRGBA.YUVToRGBAEffect.fxb'
			Target GenerateSatelliteAssemblies:
			No input files were specified for target GenerateSatelliteAssemblies, skipping.
			Target CoreCompile:
				Tool /usr/lib/mono/4.5/csc.exe execution started with arguments: /noconfig /debug:full /debug:portable /optimize- /out:obj/x86/Debug/FNA.dll /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.AlphaTestEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.AlphaTestEffect.fxb /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.BasicEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.BasicEffect.fxb /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.DualTextureEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.DualTextureEffect.fxb /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.EnvironmentMapEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.EnvironmentMapEffect.fxb /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.SkinnedEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.SkinnedEffect.fxb /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.StockEffects.FXB.SpriteEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.SpriteEffect.fxb /resource:obj/x86/Debug/Microsoft.Xna.Framework.src.Graphics.Effect.YUVToRGBA.YUVToRGBAEffect.fxb,Microsoft.Xna.Framework.Graphics.Effect.Resources.YUVToRGBAEffect.fxb src/Audio/AudioCategory.cs src/Audio/AudioChannels.cs src/Audio/AudioEmitter.cs src/Audio/AudioEngine.cs src/Audio/AudioListener.cs src/Audio/AudioStopOptions.cs src/Audio/Cue.cs src/Audio/DynamicSoundEffectInstance.cs src/Audio/InstancePlayLimitException.cs src/Audio/Microphone.cs src/Audio/MicrophoneState.cs src/Audio/NoAudioHardwareException.cs src/Audio/NoMicrophoneConnectedException.cs src/Audio/RendererDetail.cs src/Audio/SoundBank.cs src/Audio/SoundEffect.cs src/Audio/SoundEffectInstance.cs src/Audio/SoundState.cs src/Audio/WaveBank.cs src/BoundingBox.cs src/BoundingFrustum.cs src/BoundingSphere.cs src/Color.cs src/ContainmentType.cs src/Content/ContentExtensions.cs src/Content/ContentLoadException.cs src/Content/ContentManager.cs src/Content/ContentReader.cs src/Content/ContentReaders/AlphaTestEffectReader.cs src/Content/ContentReaders/ArrayReader.cs src/Content/ContentReaders/BasicEffectReader.cs src/Content/ContentReaders/BooleanReader.cs src/Content/ContentReaders/BoundingBoxReader.cs src/Content/ContentReaders/BoundingFrustumReader.cs src/Content/ContentReaders/BoundingSphereReader.cs src/Content/ContentReaders/ByteReader.cs src/Content/ContentReaders/CharReader.cs src/Content/ContentReaders/ColorReader.cs src/Content/ContentReaders/CurveReader.cs src/Content/ContentReaders/DateTimeReader.cs src/Content/ContentReaders/DecimalReader.cs src/Content/ContentReaders/DictionaryReader.cs src/Content/ContentReaders/DoubleReader.cs src/Content/ContentReaders/DualTextureEffectReader.cs src/Content/ContentReaders/EffectMaterialReader.cs src/Content/ContentReaders/EffectReader.cs src/Content/ContentReaders/EnumReader.cs src/Content/ContentReaders/EnvironmentMapEffectReader.cs src/Content/ContentReaders/ExternalReferenceReader.cs src/Content/ContentReaders/IndexBufferReader.cs src/Content/ContentReaders/Int16Reader.cs src/Content/ContentReaders/Int32Reader.cs src/Content/ContentReaders/Int64Reader.cs src/Content/ContentReaders/ListReader.cs src/Content/ContentReaders/MatrixReader.cs src/Content/ContentReaders/ModelReader.cs src/Content/ContentReaders/NullableReader.cs src/Content/ContentReaders/PlaneReader.cs src/Content/ContentReaders/PointReader.cs src/Content/ContentReaders/QuaternionReader.cs src/Content/ContentReaders/RayReader.cs src/Content/ContentReaders/RectangleReader.cs src/Content/ContentReaders/ReflectiveReader.cs src/Content/ContentReaders/SByteReader.cs src/Content/ContentReaders/SingleReader.cs src/Content/ContentReaders/SkinnedEffectReader.cs src/Content/ContentReaders/SongReader.cs src/Content/ContentReaders/SoundEffectReader.cs src/Content/ContentReaders/SpriteFontReader.cs src/Content/ContentReaders/StringReader.cs src/Content/ContentReaders/Texture2DReader.cs src/Content/ContentReaders/Texture3DReader.cs src/Content/ContentReaders/TextureCubeReader.cs src/Content/ContentReaders/TextureReader.cs src/Content/ContentReaders/TimeSpanReader.cs src/Content/ContentReaders/UInt16Reader.cs src/Content/ContentReaders/UInt32Reader.cs src/Content/ContentReaders/UInt64Reader.cs src/Content/ContentReaders/Vector2Reader.cs src/Content/ContentReaders/Vector3Reader.cs src/Content/ContentReaders/Vector4Reader.cs src/Content/ContentReaders/VertexBufferReader.cs src/Content/ContentReaders/VertexDeclarationReader.cs src/Content/ContentReaders/VideoReader.cs src/Content/ContentSerializerAttribute.cs src/Content/ContentSerializerCollectionItemNameAttribute.cs src/Content/ContentSerializerIgnoreAttribute.cs src/Content/ContentSerializerRuntimeTypeAttribute.cs src/Content/ContentSerializerTypeVersionAttribute.cs src/Content/ContentTypeReader.cs src/Content/ContentTypeReaderManager.cs src/Content/LzxDecoder.cs src/Content/ResourceContentManager.cs src/Curve.cs src/CurveContinuity.cs src/CurveKey.cs src/CurveKeyCollection.cs src/CurveLoopType.cs src/CurveTangent.cs src/Design/BoundingBoxConverter.cs src/Design/BoundingSphereConverter.cs src/Design/ColorConverter.cs src/Design/MathTypeConverter.cs src/Design/MatrixConverter.cs src/Design/PlaneConverter.cs src/Design/PointConverter.cs src/Design/QuaternionConverter.cs src/Design/RayConverter.cs src/Design/RectangleConverter.cs src/Design/Vector2Converter.cs src/Design/Vector3Converter.cs src/Design/Vector4Converter.cs src/DisplayOrientation.cs src/DrawableGameComponent.cs src/FNALoggerEXT.cs src/FNAPlatform/FNAPlatform.cs src/FNAPlatform/FNAWindow.cs src/FNAPlatform/IGLDevice.cs src/FNAPlatform/ModernGLDevice.cs src/FNAPlatform/ModernGLDevice_GL.cs src/FNAPlatform/OpenGLDevice.cs src/FNAPlatform/OpenGLDevice_GL.cs src/FNAPlatform/SDL2_FNAPlatform.cs src/FrameworkDispatcher.cs src/Game.cs src/GameComponent.cs src/GameComponentCollection.cs src/GameComponentCollectionEventArgs.cs src/GameServiceContainer.cs src/GameTime.cs src/GameWindow.cs src/Graphics/ClearOptions.cs src/Graphics/ColorWriteChannels.cs src/Graphics/CubeMapFace.cs src/Graphics/DepthFormat.cs src/Graphics/DeviceLostException.cs src/Graphics/DeviceNotResetException.cs src/Graphics/DirectionalLight.cs src/Graphics/DisplayMode.cs src/Graphics/DisplayModeCollection.cs src/Graphics/DxtUtil.cs src/Graphics/Effect/Effect.cs src/Graphics/Effect/EffectAnnotation.cs src/Graphics/Effect/EffectAnnotationCollection.cs src/Graphics/Effect/EffectMaterial.cs src/Graphics/Effect/EffectParameter.cs src/Graphics/Effect/EffectParameterClass.cs src/Graphics/Effect/EffectParameterCollection.cs src/Graphics/Effect/EffectParameterType.cs src/Graphics/Effect/EffectPass.cs src/Graphics/Effect/EffectPassCollection.cs src/Graphics/Effect/EffectTechnique.cs src/Graphics/Effect/EffectTechniqueCollection.cs src/Graphics/Effect/IEffectFog.cs src/Graphics/Effect/IEffectLights.cs src/Graphics/Effect/IEffectMatrices.cs src/Graphics/Effect/Resources.cs src/Graphics/Effect/StockEffects/AlphaTestEffect.cs src/Graphics/Effect/StockEffects/BasicEffect.cs src/Graphics/Effect/StockEffects/DualTextureEffect.cs src/Graphics/Effect/StockEffects/EffectHelpers.cs src/Graphics/Effect/StockEffects/EnvironmentMapEffect.cs src/Graphics/Effect/StockEffects/SkinnedEffect.cs src/Graphics/Effect/StockEffects/SpriteEffect.cs src/Graphics/GraphicsAdapter.cs src/Graphics/GraphicsDevice.cs src/Graphics/GraphicsDeviceStatus.cs src/Graphics/GraphicsProfile.cs src/Graphics/GraphicsResource.cs src/Graphics/IGraphicsDeviceService.cs src/Graphics/IRenderTarget.cs src/Graphics/Model.cs src/Graphics/ModelBone.cs src/Graphics/ModelBoneCollection.cs src/Graphics/ModelEffectCollection.cs src/Graphics/ModelMesh.cs src/Graphics/ModelMeshCollection.cs src/Graphics/ModelMeshPart.cs src/Graphics/ModelMeshPartCollection.cs src/Graphics/NoSuitableGraphicsDeviceException.cs src/Graphics/OcclusionQuery.cs src/Graphics/PackedVector/Alpha8.cs src/Graphics/PackedVector/Bgr565.cs src/Graphics/PackedVector/Bgra4444.cs src/Graphics/PackedVector/Bgra5551.cs src/Graphics/PackedVector/Byte4.cs src/Graphics/PackedVector/HalfSingle.cs src/Graphics/PackedVector/HalfTypeHelper.cs src/Graphics/PackedVector/HalfVector2.cs src/Graphics/PackedVector/HalfVector4.cs src/Graphics/PackedVector/IPackedVector.cs src/Graphics/PackedVector/NormalizedByte2.cs src/Graphics/PackedVector/NormalizedByte4.cs src/Graphics/PackedVector/NormalizedShort2.cs src/Graphics/PackedVector/NormalizedShort4.cs src/Graphics/PackedVector/Rg32.cs src/Graphics/PackedVector/Rgba64.cs src/Graphics/PackedVector/Rgba1010102.cs src/Graphics/PackedVector/Short2.cs src/Graphics/PackedVector/Short4.cs src/Graphics/PresentationParameters.cs src/Graphics/PresentInterval.cs src/Graphics/PrimitiveType.cs src/Graphics/RenderTarget2D.cs src/Graphics/RenderTargetBinding.cs src/Graphics/RenderTargetCube.cs src/Graphics/RenderTargetUsage.cs src/Graphics/ResourceCreatedEventArgs.cs src/Graphics/ResourceDestroyedEventArgs.cs src/Graphics/SamplerStateCollection.cs src/Graphics/SetDataOptions.cs src/Graphics/SpriteBatch.cs src/Graphics/SpriteEffects.cs src/Graphics/SpriteFont.cs src/Graphics/SpriteSortMode.cs src/Graphics/States/Blend.cs src/Graphics/States/BlendFunction.cs src/Graphics/States/BlendState.cs src/Graphics/States/CompareFunction.cs src/Graphics/States/CullMode.cs src/Graphics/States/DepthStencilState.cs src/Graphics/States/FillMode.cs src/Graphics/States/RasterizerState.cs src/Graphics/States/SamplerState.cs src/Graphics/States/StencilOperation.cs src/Graphics/States/TextureAddressMode.cs src/Graphics/States/TextureFilter.cs src/Graphics/SurfaceFormat.cs src/Graphics/Texture.cs src/Graphics/Texture2D.cs src/Graphics/Texture3D.cs src/Graphics/TextureCollection.cs src/Graphics/TextureCube.cs src/Graphics/Vertices/BufferUsage.cs src/Graphics/Vertices/DynamicIndexBuffer.cs src/Graphics/Vertices/DynamicVertexBuffer.cs src/Graphics/Vertices/IndexBuffer.cs src/Graphics/Vertices/IndexElementSize.cs src/Graphics/Vertices/IVertexType.cs src/Graphics/Vertices/VertexBuffer.cs src/Graphics/Vertices/VertexBufferBinding.cs src/Graphics/Vertices/VertexDeclaration.cs src/Graphics/Vertices/VertexDeclarationCache.cs src/Graphics/Vertices/VertexElement.cs src/Graphics/Vertices/VertexElementFormat.cs src/Graphics/Vertices/VertexElementUsage.cs src/Graphics/Vertices/VertexPositionColor.cs src/Graphics/Vertices/VertexPositionColorTexture.cs src/Graphics/Vertices/VertexPositionNormalTexture.cs src/Graphics/Vertices/VertexPositionTexture.cs src/Graphics/Viewport.cs src/Graphics/X360TexUtil.cs src/GraphicsDeviceInformation.cs src/GraphicsDeviceManager.cs src/IDrawable.cs src/IGameComponent.cs src/IGraphicsDeviceManager.cs src/Input/Buttons.cs src/Input/ButtonState.cs src/Input/GamePad.cs src/Input/GamePadButtons.cs src/Input/GamePadCapabilities.cs src/Input/GamePadDeadZone.cs src/Input/GamePadDPad.cs src/Input/GamePadState.cs src/Input/GamePadThumbSticks.cs src/Input/GamePadTriggers.cs src/Input/GamePadType.cs src/Input/Keyboard.cs src/Input/KeyboardState.cs src/Input/Keys.cs src/Input/KeyState.cs src/Input/Mouse.cs src/Input/MouseState.cs src/Input/TextInputEXT.cs src/Input/Touch/GestureSample.cs src/Input/Touch/GestureType.cs src/Input/Touch/TouchCollection.cs src/Input/Touch/TouchLocation.cs src/Input/Touch/TouchLocationState.cs src/Input/Touch/TouchPanel.cs src/Input/Touch/TouchPanelCapabilities.cs src/IUpdateable.cs src/LaunchParameters.cs src/MathHelper.cs src/Matrix.cs src/Media/MediaPlayer.cs src/Media/MediaQueue.cs src/Media/MediaState.cs src/Media/Song.cs src/Media/SongCollection.cs src/Media/VideoSoundtrackType.cs src/Media/VisualizationData.cs src/Media/Xiph/Video.cs src/Media/Xiph/VideoPlayer.cs src/NamespaceDocs.cs src/Plane.cs src/PlaneIntersectionType.cs src/PlayerIndex.cs src/Point.cs src/PreparingDeviceSettingsEventArgs.cs src/Properties/AssemblyInfo.cs src/Quaternion.cs src/Ray.cs src/Rectangle.cs src/Storage/StorageContainer.cs src/Storage/StorageDevice.cs src/Storage/StorageDeviceNotConnectedException.cs src/TitleContainer.cs src/TitleLocation.cs src/Utilities/AssemblyHelper.cs src/Utilities/FileHelpers.cs src/Utilities/FNAInternalExtensions.cs src/Vector2.cs src/Vector3.cs src/Vector4.cs lib/SDL2-CS/src/SDL2.cs lib/SDL2-CS/src/SDL2_image.cs lib/FAudio/csharp/FAudio.cs lib/MojoShader/csharp/MojoShader.cs lib/Theorafile/csharp/Theorafile.cs obj/x86/Debug/.NETFramework,Version=v4.0.AssemblyAttribute.cs /target:library /unsafe+ /define:DEBUG /nostdlib /platform:x86 /reference:/usr/lib/mono/4.0-api/System.dll /reference:/usr/lib/mono/4.0-api/System.Core.dll /reference:/usr/lib/mono/4.0-api//mscorlib.dll /warn:4
				Microsoft (R) Visual C# Compiler version 2.7.0.62620 (e873e693)
				Copyright (C) Microsoft Corporation. All rights reserved.
			Target _CopyDeployFilesToOutputDirectoryAlways:
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/FNA.dll.config' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/bin/Debug/FNA.dll.config'
			Target DeployOutputFiles:
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/FNA.pdb' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/bin/Debug/FNA.pdb'
				Copying file from '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/obj/x86/Debug/FNA.dll' to '/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/bin/Debug/FNA.dll'
		Done building project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/FNA/FNA.csproj".
		Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj" (default target(s)):
			Target PrepareForBuild:
				Configuration: Debug Platform: AnyCPU
			Target ResolveProjectReferences:
				Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj" (default target(s)):
					Target PrepareForBuild:
						Configuration: Debug Platform: AnyCPU
					Target GenerateSatelliteAssemblies:
					No input files were specified for target GenerateSatelliteAssemblies, skipping.
					Target CoreCompile:
						Tool /usr/lib/mono/4.5/csc.exe execution started with arguments: /noconfig /debug:full /debug:portable /optimize- /out:obj/Debug/MonoMod.Utils.dll ../MonoMod/Properties/AssemblyInfo.Common.cs DynamicMethodDefinition.cs DynamicMethodHelper.cs DynDll.cs Extensions.cs LimitedStream.cs ModInterop/ModExportName.cs ModInterop/ModImportName.cs MonoMod__OldName__.cs MonoModExt.cs Platform.cs PlatformHelper.cs Properties/AssemblyInfo.cs FastReflectionHelper.cs RelinkFailedException.cs RelinkTargetNotFoundException.cs StringInjectExtension.cs ModInterop/ModInteropManager.cs /target:library /define:"DEBUG;TRACE" /langversion:7.3 /nostdlib /reference:/usr/lib/mono/2.0-api/System.dll /reference:/usr/lib/mono/2.0-api/System.Core.dll /reference:/usr/lib/mono/2.0-api//mscorlib.dll /warn:4
						Microsoft (R) Visual C# Compiler version 2.7.0.62620 (e873e693)
						Copyright (C) Microsoft Corporation. All rights reserved.
CSC: error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values.
					Task "Csc" execution -- FAILED
					Done building target "CoreCompile" in project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj".-- FAILED
				Done building project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj".-- FAILED
			Task "MSBuild" execution -- FAILED
			Done building target "ResolveProjectReferences" in project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj".-- FAILED
		Done building project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj".-- FAILED
		Project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod/MonoMod.csproj" (default target(s)):
			Target PrepareForBuild:
				Configuration: Debug Platform: AnyCPU
			Target GenerateSatelliteAssemblies:
			No input files were specified for target GenerateSatelliteAssemblies, skipping.
			Target CoreCompile:
				Tool /usr/lib/mono/4.5/csc.exe execution started with arguments: /noconfig /debug:full /debug:portable /optimize- /out:obj/Debug/MonoMod.exe InlineRT/MonoModRulesModder.cs MMIL/Inject.cs Modifiers/MonoModForceCallvirt.cs Modifiers/MonoModForceCall.cs Modifiers/MonoModLinkFrom.cs Modifiers/MonoMod__WasIDictionary__.cs Modifiers/MonoMod__SafeToCopy__.cs InlineRT/MonoModRulesManager.cs InlineRT/MonoModRule.cs Modifiers/MonoModCustomAttribute.cs Modifiers/MonoModHook.cs Modifiers/MonoModIfFlag.cs Modifiers/MonoModNoNew.cs Modifiers/MonoModOnPlatform.cs Modifiers/MonoModAdded.cs Modifiers/MonoModOriginal.cs Modifiers/MonoModOriginalName.cs Modifiers/MonoModTargetModule.cs Modifiers/MonoModPublic.cs Modifiers/MonoModPatch.cs MonoModder.cs Program.cs Properties/AssemblyInfo.cs Modifiers/MonoModIgnore.cs Modifiers/MonoModRemove.cs Modifiers/MonoModReplace.cs Modifiers/MonoModConstructor.cs Modifiers/MonoModLinkTo.cs Modifiers/MonoModEnumReplace.cs Properties/AssemblyInfo.Common.cs /target:exe /unsafe+ /define:"DEBUG;TRACE" /langversion:7.3 /nostdlib /platform:AnyCPU /reference:/usr/lib/mono/2.0-api/System.dll /reference:/usr/lib/mono/2.0-api/System.Core.dll /reference:/usr/lib/mono/2.0-api//mscorlib.dll /warn:4
				Microsoft (R) Visual C# Compiler version 2.7.0.62620 (e873e693)
				Copyright (C) Microsoft Corporation. All rights reserved.
CSC: error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values.
			Task "Csc" execution -- FAILED
			Done building target "CoreCompile" in project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod/MonoMod.csproj".-- FAILED
		Done building project "/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod/MonoMod.csproj".-- FAILED
	Task "MSBuild" execution -- FAILED
	Done building target "ResolveProjectReferences" in project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj".-- FAILED
Done building project "/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj".-- FAILED

Build FAILED.
Errors:

/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets (ResolveProjectReferences target) ->
/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.RuntimeDetour/MonoMod.RuntimeDetour.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets (ResolveProjectReferences target) ->
/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoMod.Utils.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.CSharp.targets (CoreCompile target) ->

	CSC: error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values.

/home/thfr/Desktop/x2f/XnaToFna/XnaToFna.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets (ResolveProjectReferences target) ->
/home/thfr/Desktop/x2f/XnaToFna/lib-projs/MonoMod/MonoMod/MonoMod.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.CSharp.targets (CoreCompile target) ->

	CSC: error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values.

	 0 Warning(s)
	 2 Error(s)

Time Elapsed 00:00:02.2327680

Content directory

I've been looking some at Underrail (GOG version). The content is in a data directory, but XnaToFna.exe tells me that it expects a Content directory and if I rename data to Content, it processes the files in there.

Now my question: how does this work at runtime? does runtime expect the content files now in data or in Content?

Loading game ModuleDefinition can fail on macOS

Migrated from FNA-XNA/FNA#166, CC @CNAmira

Collected information about original issue below:

Yes, I'm using Mac for daily use.
I've also tried on my PC, but it reports an error like call to a missing method.
-- @CNAmira

Log:

[XnaToFna] [Version] 17.11.3.34824
[XnaToFna] [ScanPath] Checking assembly Stardew Valley (rw)
[XnaToFna] [ScanPath] XnaToFna-ing Stardew Valley
[XnaToFna] [ScanPath] Scanning directory /Users/alpine/Stardew Valley
[XnaToFna] [ScanPath] Found Content directory: /Users/alpine/Stardew Valley/Content
[XnaToFna] [ScanPath] Checking assembly BmFont (rw)
[XnaToFna] [ScanPath] Checking assembly FNA (r-)
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Avatar -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Content.Pipeline -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Game -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Graphics -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Input.Touch -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Storage -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Video -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Xact -> FNA
[XnaToFna] [ScanPath] Checking assembly GalaxyCSharp (rw)
[XnaToFna] [ScanPath] Checking assembly Lidgren.Network (rw)
[XnaToFna] [ScanPath] Checking assembly Netcode (rw)
[XnaToFna] [ScanPath] Checking assembly Stardew Valley (rw)

Unhandled Exception:
System.IO.IOException: Sharing violation on path /Users/alpine/Stardew Valley/Stardew Valley.exe
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x0019e] in <bb7b695b8c6246b3ac1646577aea7650>:0 
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) [0x00000] in <bb7b695b8c6246b3ac1646577aea7650>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at Mono.Cecil.ModuleDefinition.GetFileStream (System.String fileName, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) [0x00006] in <d78877a5c52c41829df4feaac055547e>:0 
  at Mono.Cecil.ModuleDefinition.ReadModule (System.String fileName, Mono.Cecil.ReaderParameters parameters) [0x00008] in <d78877a5c52c41829df4feaac055547e>:0 
  at MonoMod.MonoModExt.ReadModule (System.String path, Mono.Cecil.ReaderParameters rp) [0x0001d] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.XnaToFnaUtil.ScanPath (System.String path) [0x00278] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.XnaToFnaUtil.ScanPaths (System.String[] paths) [0x0000a] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.XnaToFnaUtil.ScanPath (System.String path) [0x001a5] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.Program.Main (System.String[] args) [0x00465] in <d78877a5c52c41829df4feaac055547e>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.IOException: Sharing violation on path /Users/alpine/Stardew Valley/Stardew Valley.exe
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x0019e] in <bb7b695b8c6246b3ac1646577aea7650>:0 
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) [0x00000] in <bb7b695b8c6246b3ac1646577aea7650>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at Mono.Cecil.ModuleDefinition.GetFileStream (System.String fileName, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) [0x00006] in <d78877a5c52c41829df4feaac055547e>:0 
  at Mono.Cecil.ModuleDefinition.ReadModule (System.String fileName, Mono.Cecil.ReaderParameters parameters) [0x00008] in <d78877a5c52c41829df4feaac055547e>:0 
  at MonoMod.MonoModExt.ReadModule (System.String path, Mono.Cecil.ReaderParameters rp) [0x0001d] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.XnaToFnaUtil.ScanPath (System.String path) [0x00278] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.XnaToFnaUtil.ScanPaths (System.String[] paths) [0x0000a] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.XnaToFnaUtil.ScanPath (System.String path) [0x001a5] in <d78877a5c52c41829df4feaac055547e>:0 
  at XnaToFna.Program.Main (System.String[] args) [0x00465] in <d78877a5c52c41829df4feaac055547e>:0 

Add "Platform" modes, isolate tools based on target

A big problem I'm having with XnaToFna's out-of-the-box experience at the moment is that it's doing a LOT of work that it doesn't necessarily need to; this commit gets what I've found so far...

678f847

... but now that we have Proton on the table, it may be worth reconsidering the UX to act in three modes:

  • Windows Mode: Default. Just relink, re-encode WMA/WMV, and fix up Forms usage.
  • Linux Mode: Same as Windows Mode, but with case sensitivity fixes
  • 360 Mode: Same as Windows Mode, but ignores Forms relinking and fixes endianness

All other options should be disabled and only enabled upon request when doing research-y things (stuff like force-anycpu, for example).

The idea is that we can potentially make it so Proton XNA games can just pull in an XnaToFna-Proton zip that includes XnaToFna, FNA 18.10, and fnalibs Windows x86, run in Windows Mode, then the game can execute under wine-mono without having to worry about the C++/CLI compat issues.

Old FNA games

I wanted to know if it's possible to do a similar process XnaToFna does, but for games that were compiled with older versions of FNA. For example, I want an existing game that has been compiled with FNA 16.12 to use FNA 20.03 instead.

If this is not easily possible, what should theoretically be done to achieve what I want? Or is the idea just bad?

The Monolithic WMA/WMV Content Thread

This is where we dump bugs related to Windows Media content not being fixed or bugs that are introduced by the content conversion.

Starting with a Stardew Valley WaveBank, which interestingly doesn't use xWMA at all:

System.IO.EndOfStreamException: Unable to read beyond the end of the stream.
  at System.IO.BinaryReader.FillBuffer (System.Int32 numBytes) [0x0008f] in /builddir/build/BUILD/mono-4.6.2/mcs/class/referencesource/mscorlib/system/io/binaryreader.cs:571 
  at System.IO.BinaryReader.ReadUInt32 () [0x00000] in /builddir/build/BUILD/mono-4.6.2/mcs/class/referencesource/mscorlib/system/io/binaryreader.cs:191 
  at Microsoft.Xna.Framework.Audio.WaveBank.LoadWaveBank (Microsoft.Xna.Framework.Audio.AudioEngine audioEngine, System.IO.BinaryReader reader, System.Boolean streaming) [0x00010] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/Audio/WaveBank.cs:293 
  at Microsoft.Xna.Framework.Audio.WaveBank..ctor (Microsoft.Xna.Framework.Audio.AudioEngine audioEngine, System.String nonStreamingWaveBankFilename) [0x00043] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/Audio/WaveBank.cs:181 
  at StardewValley.Game1.Initialize () [0x00117] in <8735ddc4c49943f59d59831f1ffc73cf>:0 
  at Microsoft.Xna.Framework.Game.DoInitialize () [0x0000f] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/Game.cs:828 
  at Microsoft.Xna.Framework.Game.Run () [0x00014] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/Game.cs:417 
  at StardewValley.Program.Main (System.String[] args) [0x00028] in <8735ddc4c49943f59d59831f1ffc73cf>:0

Remove XNA Relinking Process

Finally a report where I'm getting you to do less work for a change.

As of FNA 19.04, we're now at the point where the ABI files are reliable enough to be shipped in wine-mono. This effectively eliminates the need to relink all the XNA references to FNA!

With that in mind, I think we can retire that part of XnaToFna's process, and trim it down to just the proxies (which are still useful, especially the Forms work).

This would obsolete #15 and simplify #13.

Latest release has wrong behavior on Windows

It will scan assemblies such as Mono.Cecil, however they are used by XnaToFna.
It doesn't happen on macOS.

C:\Program Files\Steam\steamapps\common\Stardew Valley>XnaToFna.exe
[XnaToFna] [Version] 18.5.0.42592
[XnaToFna] [ScanPath] Scanning directory C:\Program Files\Steam\steamapps\common
\Stardew Valley
[XnaToFna] [ScanPath] Found Content directory: C:\Program Files\Steam\steamapps\
common\Stardew Valley\Content
[XnaToFna] [ScanPath] Checking assembly BmFont (rw)
[XnaToFna] [ScanPath] Checking assembly FNA (r-)
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Avatar -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Content.Pipeline -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Game -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Graphics -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Input.Touch -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Storage -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Video -> FNA
[XnaToFna] [ScanPath] Mapping Microsoft.Xna.Framework.Xact -> FNA
[XnaToFna] [ScanPath] Checking assembly GalaxyCSharp (rw)
[XnaToFna] [ScanPath] Checking assembly Lidgren.Network (rw)
[XnaToFna] [ScanPath] XnaToFna-ing Lidgren.Network
[XnaToFna] [ScanPath] Checking assembly Mono.Cecil (rw)

Unhandled Exception: System.IO.IOException: The process cannot access the file '
C:\Program Files\Steam\steamapps\common\Stardew Valley\Mono.Cecil.dll' because i
t is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I
nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o
ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea
n useLongPath)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,
FileShare share)
   at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters p
arameters)
   at MonoMod.Utils.MonoModExt.ReadModule(String path, ReaderParameters rp) in D
:\Repos\XnaToFna\lib-projs\MonoMod\MonoMod.Utils\MonoModExt.cs:line 45
   at XnaToFna.XnaToFnaUtil.ScanPath(String path) in D:\Repos\XnaToFna\src\XnaTo
FnaUtil.cs:line 256
   at XnaToFna.XnaToFnaUtil.ScanPaths(String[] paths) in D:\Repos\XnaToFna\src\X
naToFnaUtil.cs:line 138
   at XnaToFna.XnaToFnaUtil.ScanPath(String path) in D:\Repos\XnaToFna\src\XnaTo
FnaUtil.cs:line 184
   at XnaToFna.Program.Main(String[] args) in D:\Repos\XnaToFna\src\Program.cs:l
ine 114

Is it can support for XNA3.1's game...?

I wanna to try to play Magicka on linux but it doesn't have XNA3.1.I have a search and find that Duck Game use XNAtoFNA to do that.and I download the file and have a try.but I forgot it is a XNA 3.1 game and when I tried it ,it tolds me that the version is not match (old?I am chinese so the error is in chinese,and I don't know what it in ENGLISH)
I have a look and found it's a error for MonoMod,and I download a new version from the MonoMod github,but the software XNAtoFNA crashed.

The Monolithic XBOX 360 (XBLIG) Thread

This is where we dump bugs, stack traces and discuss anything that prevents us from booting (or even running) XBLIG games using XnaToFna. Both "code-" and content-related issues belong here.

Enhancement ideas are welcome, too!

Right now, Iced Lizard Games donated a few of their XBLIG titles, containing both XNA 4.0 and XNA 3.1 games. Again, thank you!

XNA 3.1 titles will depend on the "timemachine" branch (which will be merged into master once it's done... that is, if it will be ever done, given the previous bad experience with it).

XNA 4.0 titles "boot," but they fail doing anything useful as the content formats changed between the X360 and PC targets. This was already expected, but I still don't know to which extent / how exactly the formats differ.

The Monolithic Win32 API Workaround Thread

This is where we dump stack traces from Win32 things that haven't been worked around yet or have regressed in some way.

Starting with Stardew Valley, using the stardewFNA script:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: user32.dll
  at (wrapper managed-to-native) StardewValley.KeyboardInput:CallWindowProc (intptr,intptr,uint,intptr,intptr)
  at StardewValley.KeyboardInput.HookProc (System.IntPtr hWnd, System.UInt32 msg, System.IntPtr wParam, System.IntPtr lParam) [0x00000] in <8735ddc4c49943f59d59831f1ffc73cf>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in /builddir/build/BUILD/mono-4.6.2/mcs/class/corlib/System.Reflection/MonoMethod.cs:305 
   --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0004d] in /builddir/build/BUILD/mono-4.6.2/mcs/class/corlib/System.Reflection/MonoMethod.cs:313 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /builddir/build/BUILD/mono-4.6.2/mcs/class/referencesource/mscorlib/system/reflection/methodbase.cs:229 
  at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x00107] in /builddir/build/BUILD/mono-4.6.2/mcs/class/corlib/System/Delegate.cs:461 
  at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x0000b] in /builddir/build/BUILD/mono-4.6.2/mcs/class/corlib/System/MulticastDelegate.cs:67 
  at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in /builddir/build/BUILD/mono-4.6.2/mcs/class/corlib/System/Delegate.cs:406 
  at XnaToFna.PInvokeHelper.CallWindowHook (System.IntPtr hWnd, System.UInt32 Msg, System.IntPtr wParam, System.IntPtr lParam) [0x00033] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/src/Helper/PInvokeHooks/PInvokeHooks.cs:105 
  at XnaToFna.PInvokeHelper.CallWindowHook (XnaToFna.ProxyForms.Messages Msg, System.IntPtr wParam, System.IntPtr lParam) [0x0003d] in <4ffdb51268804542a4c7a670fe1965f0>:0 
  at XnaToFna.PInvokeHelper.CallHooks (XnaToFna.ProxyForms.Messages Msg, System.IntPtr wParam, System.IntPtr lParam, XnaToFna.ProxyForms.Message& lParamMsg, System.Boolean global, System.Boolean window, System.Boolean allWindows) [0x00063] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/src/Helper/PInvokeHooks/PInvokeHooks.cs:58 
  at XnaToFna.PInvokeHelper.CallHooks (XnaToFna.ProxyForms.Messages Msg, System.IntPtr wParam, XnaToFna.ProxyForms.Message lParamMsg, System.Boolean global, System.Boolean window, System.Boolean allWindows) [0x0001e] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/src/Helper/PInvokeHooks/PInvokeHooks.cs:42 
  at XnaToFna.PInvokeHelper.CallHooks (XnaToFna.ProxyForms.Messages Msg, System.IntPtr wParam, System.IntPtr lParam, System.Boolean global, System.Boolean window, System.Boolean allWindows) [0x0002e] in <4ffdb51268804542a4c7a670fe1965f0>:0 
  at XnaToFna.KeyboardEvents.CharEntered (System.Char c) [0x0000b] in <4ffdb51268804542a4c7a670fe1965f0>:0 
  at Microsoft.Xna.Framework.Input.TextInputEXT.OnTextInput (System.Char c) [0x00012] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/Input/TextInputEXT.cs:51 
  at Microsoft.Xna.Framework.SDL2_FNAPlatform.RunLoop (Microsoft.Xna.Framework.Game game) [0x005ee] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/FNAPlatform/SDL2_FNAPlatform.cs:785 
  at Microsoft.Xna.Framework.Game.Run () [0x00038] in /home/flibitijibibo/.wine/drive_c/Program Files/Steam/steamapps/common/Stardew Valley/XnaToFna/lib-projs/FNA/src/Game.cs:424 
  at StardewValley.Program.Main (System.String[] args) [0x00028] in <8735ddc4c49943f59d59831f1ffc73cf>:0

IndexOutOfRangeException when relinking Super Puzzle Platformer Deluxe

I'm trying to get this tool to work on Super Puzzle Platformer Deluxe, however it's giving me the following error:

Unhandled Exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
  at Mono.Collections.Generic.Collection`1[T].get_Item (System.Int32 index) [0x0000f] in <c7395fd07a6943a1a56fcca966c533fc>:0 
  at MonoMod.Utils.MonoModExt.Relink (Mono.Cecil.ParameterDefinition param, MonoMod.Utils.Relinker relinker, Mono.Cecil.IGenericParameterProvider context) [0x00023] in /home/jos/workspace/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoModExt.cs:550 
  at MonoMod.Utils.MonoModExt.Relink (Mono.Cecil.IMetadataTokenProvider mtp, MonoMod.Utils.Relinker relinker, Mono.Cecil.IGenericParameterProvider context) [0x00067] in /home/jos/workspace/XnaToFna/lib-projs/MonoMod/MonoMod.Utils/MonoModExt.cs:439 
  at MonoMod.MonoModder.Relink (Mono.Cecil.IMetadataTokenProvider mtp, Mono.Cecil.IGenericParameterProvider context) [0x00001] in /home/jos/workspace/XnaToFna/lib-projs/MonoMod/MonoMod/MonoModder.cs:816 
  at MonoMod.MonoModder.PatchRefsInMethod (Mono.Cecil.MethodDefinition method) [0x003d6] in /home/jos/workspace/XnaToFna/lib-projs/MonoMod/MonoMod/MonoModder.cs:1819 
  at MonoMod.MonoModder.PatchRefsInType (Mono.Cecil.TypeDefinition type) [0x00241] in /home/jos/workspace/XnaToFna/lib-projs/MonoMod/MonoMod/MonoModder.cs:1725 
  at MonoMod.MonoModder.PatchRefs () [0x001b2] in /home/jos/workspace/XnaToFna/lib-projs/MonoMod/MonoMod/MonoModder.cs:1592 
  at XnaToFna.XnaToFnaUtil.Stub (Mono.Cecil.ModuleDefinition mod) [0x000ea] in /home/jos/workspace/XnaToFna/src/XnaToFnaUtil.Stubber.cs:37 
  at XnaToFna.XnaToFnaUtil.RelinkAll () [0x00072] in /home/jos/workspace/XnaToFna/src/XnaToFnaUtil.cs:354 
  at XnaToFna.Program.Main (System.String[] args) [0x0057d] in /home/jos/workspace/XnaToFna/src/Program.cs:118 

I've traced this to lib-projs/MonoMod/MonoMod/MonoModder.cs, line 1817. It's attempting to relink a parameter with an ParameterIndex of -1. More specifically, this is happening on a ldarg instruction inside System.Void SlimDX.DirectInput.EffectParameters::GetAxes(System.Int32[]&,System.Int32[]&).

NullReferenceException when running build compiled from source

Hi, I'm trying to compile from source since the last release is giving me some problems which, looking at the current code, seems to be fixed. However, when I run the executable it's giving me a NullReferenceException

Full stack trace:

Server stack trace: 
  at XnaToFna.FNAHookBridgeXTF.Init (System.Reflection.Assembly fna) [0x00097] in <311bf2f0d0f0429a9c000964fa75761c>:0 
  at XnaToFna.FNAHooker.Boot () [0x0000d] in <311bf2f0d0f0429a9c000964fa75761c>:0 
  at XnaToFna.FNAHooker+Proxy.Boot () [0x00001] in <311bf2f0d0f0429a9c000964fa75761c>:0 
  at (wrapper remoting-invoke-with-check) XnaToFna.FNAHooker+Proxy:Boot ()
  at (wrapper xdomain-dispatch) XnaToFna.FNAHooker+Proxy:Boot (object,byte[]&,byte[]&)

Exception rethrown at [0]: 
  at (wrapper xdomain-invoke) XnaToFna.FNAHooker+Proxy:Boot ()
  at (wrapper remoting-invoke-with-check) XnaToFna.FNAHooker+Proxy:Boot ()
  at XnaToFna.FNAHooker.BootHookedAppDomain (System.String[] args) [0x00111] in <311bf2f0d0f0429a9c000964fa75761c>:0 
  at XnaToFna.FNAHooker.Hook (System.String[] args) [0x0001b] in <311bf2f0d0f0429a9c000964fa75761c>:0 
  at XnaToFna.Program.Main (System.String[] args) [0x00001] in <311bf2f0d0f0429a9c000964fa75761c>:0 

The issue here seems to be that FNA.GetType(typeof(FNAHookBridgeFNA).FullName) is returning null, but I can't quite figure out why.

I'm using XBuild Engine Version 14.0 - Mono, Version 4.6.2.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.