Relink C# assemblies from XNA Framework 4.0 to FNA instead
zlib-licensed, clone recursively
Relinker making some games using XNA 4.0 run with FNA. It goes as far as booting some X360 games on Android.
- Download release OR compile using Visual Studio, MonoDevelop,
xbuildor something that compiles C# code.
XnaToFna.exeinto the game directory.
FNA.dlland the native libs into the game directory.
XnaToFna.exewith Mono on Linux / macOS or .NET Framework on Windows.
XnaToFna.exein the game directory because the game now also links to the
XnaToFnaHelperinside it, whoops.
- Update Mono or MonoKickstart.
- Complain about broken paths, unconverted sound / video assets, Windows-specific
DllImports and unsupported, closed-source native libraries.
Special thanks to:
- Ethan "flibitijibibo" Lee: Thank you for FNA! This wouldn't have been without you!
- ADAMATOMIC: for the image above!
- Iced Lizard Games for donating a good bunch of X360 titles and sources, some even unreleased!
- My Patrons on Patreon, both current and former ones:
- razing32 for giving me an UnderRail key to test it with!
Using MonoMod, it sets up the relinking map in MonoMod to relink all
Microsoft.Xna.Framework references to
It can also relink from
FNA.NetStub, if it exists in the game directory.
Finally, it applies some optional salt and pepper here and there (
What's up with XnaToFna-Legacy?
XnaToFna-Legacy was practically a heavily modified fork of MonoMod, meant to relink and only to relink... and fix the paths, which didn't always work.
This rebuilt version uses "MonoMod neo", which itself is a rebuilt version of MonoMod. It now supports defining a custom relinker and relinking maps for the default relinker.
Before, most relinker fixes ping-ponged between MonoMod and XnaToFna, while some of them weren't even compatible with each other.
Keeping the actual relinking in MonoMod means there's only one relinker to maintain and only one place where it can screw up.