=================================================================== RCS file: /anoncvsroot/anoncvs/cvs/projects/fnaify/fnaify.1,v retrieving revision 1.2 retrieving revision 1.49 diff -u -r1.2 -r1.49 --- projects/fnaify/fnaify.1 2019/09/21 20:02:52 1.2 +++ projects/fnaify/fnaify.1 2020/10/07 20:31:26 1.49 @@ -1,28 +1,45 @@ -.Dd $Mdocdate: September 21 2019 $ +.Dd $Mdocdate: October 7 2020 $ .Dt FNAIFY 1 .Os .Sh NAME .Nm fnaify -.Nd script to get FNA-based games ready to run on OpenBSD +.Nd run FNA/XNA games on OpenBSD .Sh SYNOPSIS .Nm .Op Fl i | y -.Op Fl hv -.Op Fl d Ar depdir +.Op Fl hsv +.Op Fl c Ar configfile +.Op Fl D Ar depdir +.Op Fl d Ar gamedir +.Op Fl f Ar frameworkfile | Fl F Ar frameworkversion .Op Fl m Ar monopath -.Op Ar gamedir +.Op Ar userflags .Sh DESCRIPTION .Nm -sets up games based on the FNA engine to operate with OpenBSD-native -libraries and its mono(1) runtime. +runs games based on the FNA engine with OpenBSD-native +libraries and its +.Xr mono 1 +runtime. .Pp As of version 2.0, .Nm has been extended to attempt configuring XNA games as well. .Nm -can be run in 3 basic modes regarding the addition of missing libraries -- restrictive, interactive, and permissive. +can be run in 3 basic modes regarding the addition of missing libraries: +restrictive +.Po +default +.Pc +, interactive, and permissive. .Pp +As of version 3.0, +.Nm +unifies both setup and launch of supported games in one command. +.Pp +All games require additional libraries from ports, like SDL2. Some of +them can be found in the fnaify-extralibs package, like libatomstb or +libfmod_SDL. +.Pp The arguments are as follows: .Bl -tag -width Ds .It Fl i | y @@ -32,20 +49,21 @@ be addressed with drop-in DLL replacements, or where an option needs to be selected. With -.Fl i -, +.Fl i , .Nm runs in interactive mode, meaning the user will be prompted in every case. With -.Fl y -, +.Fl y , .Nm -runs in permissive mode ( +runs in permissive mode +.Po .Fl y for -.Qq yes -to all). This means that any suggested drop-in DLLs will be installed, +.Dq yes +to all +.Pc . +This means that any suggested drop-in DLLs will be installed, and if different options are possible (like picking among several .exe files for the launch script), the first one will be selected automatically. @@ -56,180 +74,303 @@ is specified, .Nm runs in restrictive mode, that is no drop-in DLLs will be installed. -.It Fl d Ar depdir +.It Fl c Ar configfile +Optional. Use +.Ar configfile +for the configuration of +.Xr mono 1 . +This sets up dllmap/dllentry settings to use the correct libraries. See +.Xr mono-config 5 +for details. If this option is omitted, +.Nm +looks first for +.Pa ~/.config/fnaify/fnaify.dllmap.config +and then for +.Pa /usr/local/share/fnaify/fnaify.dllmap.config . +If neither one is found, +.Nm +creates +.Pa ~/.config/fnaify/fnaify.dllmap.config +with default settings. +.It Fl D Ar depdir Add .Ar depdir -to the directories to search for native library dependencies. A -directory specified this way will be searched +to the directories to search for native library dependencies. +A directory specified this way will be searched .Em before -the default locations ( -.Pa /usr/local/lib -etc.). +the default locations +.Pq Pa /usr/local/lib No etc. . +.It Fl d Ar gamedir +Path to the game's directory +.Pq defaults to the current working directory . +.It Fl F Ar frameworkversion +Choose a specific framework version to use. +.It Fl f Ar frameworkfile +Framework file to use. Typically +.Pa FNA.dll +or +.Pa MonoGame.Framework.dll . +By default will automatically identify the bundled file in the +game's directory. +.It Fl h +Prints help text. .It Fl m Ar monopath Add .Ar monopath -to the directories the mono(1) runtime will search for DLLs. -.It Fl h -Prints help text. +to the directories the +.Xr mono 1 +runtime will search for DLLs. +.It Fl s +Force (re-)running setup. +.It Fl V +Display version of +.Nm . .It Fl v Verbose mode. -.It Ar gamedir -Optional. Path to the game directory to process. If not specified, the current working directory will be used. +.It Ar userflags +Optional. +Flags that are passed to the game as arguments .El .Sh SUPPORTED GAMES +.Bl -item -compact +.It The Adventures of Shuggy -.br +.It +Akane the Kunoichi +.It +Amazing Princess Sarah +.It Apotheon -.br +.It +Apple Jack 1&2 +.It +Atom Zombie Smasher +.It +A Virus Named TOM [!] +.It +Before the Echo [!] +.It +Bird Assassin +.It Bleed -.br +.It Bleed 2 -.br +.It Breath of Death VII -.br +.It Brushwood Buddies -.br +.It +Camera Obscura +.It Capsized -.br +.It +Celeste (no audio) +.It Chaos Heart -.br +.It Charlie Murder -.br +.It Chasm -.br +.It CometStriker -.br +.It Cryptark -.br +.It Cthulhu Saves the World -.br +.It Curse of the Crescent Isle DX -.br +.It Dad Quest -.br -Dead Pixels II -.br +.It +Dead Pixels [!] +.It +Dead Pixels II [!] +.It The Dishwasher: Vampire Smile -.br +.It +Draw a Stickman: EPIC +.It Dust: An Elysian Tail -.br +.It +Eagle Island +.It +Eliza +.It Escape Goat -.br +.It Escape Goat 2 -.br +.It +EXAPUNKS +.It FEZ -.br +.It Fist Puncher -.br +.It Flinthook -.br +.It Flotilla -.br +.It Gateways -.br +.It +Grand Class Melee 2 [!] +.It Growing Pains -.br +.It HackNet -.br +.It +Hidden in Plain Sight +.It Hive -.br +.It Hyphen -.br +.It Jon Shafer's At the Gates -.br +.It LaserCat -.br +.It +Little Racers STREET +.It Mercenary Kings -.br +.It +MidBoss +.It +Molek-Syntez +.It +Mount Your Friends [!] +.It +NeuroVoider +.It Ninja Warrior -.br +.It One Finger Death Punch -.br +.It +Opus Magnum +.It Overdriven Reloaded -.br +.It Owlboy -.br +.It Paladin -.br +.It Penny Arcade's On the Rain-Slick Precipice of Darkness 3 -.br +.It Penny Arcade's On the Rain-Slick Precipice of Darkness 4 -.br +.It +Phoenix Force +.It +PlanetFriend +.It Press X to Not Die -.br +.It Rex Rocket -.br +.It Rogue Legacy -.br +.It +Ruggnar +.It Salt and Sanctuary -.br +.It +Session Seven +.It +Shenzhen I/O +.It Shipwreck -.br +.It +Signs of Life +.It Skulls of the Shogun -.br +.It Soulcaster 1 & 2 -.br +.It +SpaceChem [!] +.It SpeedRunners -.br +.It Stardew Valley -.br +.It Sumico -.br -Super Amazing Wagon Adventure -.br +.It +Super Amazing Wagon Adventure [!] +.It +Super Blood Hockey +.It Super Rad Raygun -.br +.It +Sword of the Stars: The Pit [!] +.It +Terraria +.It Timespinner -.br +.It TowerFall: Ascension -.br +.It +Ultra Hat Dimension +.It Unexplored -.br +.It Unholy Heights (no audio) -.br +.It The Useful Dead -.br +.It +Weapon of Choice [!] +.It Wizorb -.br +.It Wyv and Keep +.El .Sh FILES .Bl -tag -width Ds +.It Pa /usr/local/share/fnaify/fnaify.dllmap.config +Default configuration file to map DLLs to native libraries. .It Pa ~/.config/fnaify/fnaify.dllmap.config -Configuration file to map DLLs to native libraries, based on OpenBSD -library naming. +User directory configuration file. Takes precedence if it exists. +Make sure to keep it up-to-date! .El .Sh EXIT STATUS .Nm -returns 1 if an error occurred with the arguments of files provided, -otherwise 0. +returns 1 if an error occurred, otherwise 0. .Sh EXAMPLES Run in permissive mode, suitable to set up most supported games automatically. .Pp -.Dl $ fnaify -y path/to/game/directory +.Dl $ fnaify -y -d path/to/game/directory .Pp Run in interactive mode. .Nm will prompt the user if any additional DLLs are recommended, or if a file needs to be selected for the launch script. .Pp -.Dl $ fnaify -i path/to/game/directory +.Dl $ fnaify -i .Sh SEE ALSO -.Xr mono 1 +.Xr mono 1 , +.Xr mono-config 5 .Sh HISTORY The .Nm utility was originally created in December 2017 by -.An Thomas Frohwein Aq Mt thfr@openbsd.org +.An Thomas Frohwein Aq Mt thfr@openbsd.org . .Sh RELEASE HISTORY .Bl -tag -width Ds +.It 3.0 +Stop creating launch script. Instead use fnaify for both +setup and launch. +Support for several Zachtronics games. Add libstubborn use to dllmap. +Symlinking for MonoGame, e.g. NeuroVoider. +Preferential use of installed FNA.dll over bundled one. +.It 2.2 +Fix config for mono 6. Add support for libcestub. +.It 2.1 +Support for additional XNA games. Add MONO_FORCE_COMPAT quirk. .It 2.0 -Add support for XNA games. Introduce modes +Add support for XNA games. +Introduce interactivity flags .Fl i | y to facilitate adding in needed assemblies/libraries. .It 1.3 -Add prompt to download and replace FNA.dll if incompatible version is -found. Detect steamstubs directory and use Steamworks stubs if present. +Add prompt to download and replace +.Pa FNA.dll +if incompatible version is found. +Detect steamstubs directory and use Steamworks stubs if present. .It 1.2 FreeBSD portability fixes, account for more special cases (MidBoss, Adventures of Shuggy, Atom Zombie Smasher), add directory path to plug @@ -242,3 +383,4 @@ .Sh AUTHORS .An -nosplit .An Thomas Frohwein Aq Mt thfr@openbsd.org +.An Mariusz Zaborski