Annotation of projects/fnaify/fnaify.1, Revision 1.57
1.57 ! thfr 1: .Dd $Mdocdate: November 24 2021 $
1.1 thfr 2: .Dt FNAIFY 1
3: .Os
4: .Sh NAME
5: .Nm fnaify
1.6 thfr 6: .Nd run FNA/XNA games on OpenBSD
1.1 thfr 7: .Sh SYNOPSIS
8: .Nm
9: .Op Fl i | y
1.51 thfr 10: .Op Fl hnsv
1.7 thfr 11: .Op Fl c Ar configfile
1.45 thfr 12: .Op Fl D Ar depdir
13: .Op Fl d Ar gamedir
14: .Op Fl f Ar frameworkfile | Fl F Ar frameworkversion
1.1 thfr 15: .Op Fl m Ar monopath
1.45 thfr 16: .Op Ar userflags
1.1 thfr 17: .Sh DESCRIPTION
18: .Nm
1.45 thfr 19: runs games based on the FNA engine with OpenBSD-native
1.3 thfr 20: libraries and its
21: .Xr mono 1
22: runtime.
1.1 thfr 23: .Pp
24: As of version 2.0,
25: .Nm
26: has been extended to attempt configuring XNA games as well.
27: .Nm
1.3 thfr 28: can be run in 3 basic modes regarding the addition of missing libraries:
1.45 thfr 29: restrictive
30: .Po
31: default
32: .Pc
33: , interactive, and permissive.
34: .Pp
35: As of version 3.0,
36: .Nm
37: unifies both setup and launch of supported games in one command.
1.1 thfr 38: .Pp
1.19 thfr 39: All games require additional libraries from ports, like SDL2. Some of
1.45 thfr 40: them can be found in the fnaify-extralibs package, like libatomstb or
1.19 thfr 41: libfmod_SDL.
42: .Pp
1.1 thfr 43: The arguments are as follows:
44: .Bl -tag -width Ds
45: .It Fl i | y
46: The mode determines how
47: .Nm
48: handles situations where compatibility problems are identified that can
49: be addressed with drop-in DLL replacements, or where an option needs to
50: be selected.
51: With
1.3 thfr 52: .Fl i ,
1.1 thfr 53: .Nm
54: runs in interactive mode, meaning the user will be prompted in every
55: case.
56: With
1.3 thfr 57: .Fl y ,
1.1 thfr 58: .Nm
1.3 thfr 59: runs in permissive mode
60: .Po
1.1 thfr 61: .Fl y
62: for
1.3 thfr 63: .Dq yes
64: to all
65: .Pc .
66: This means that any suggested drop-in DLLs will be installed,
1.1 thfr 67: and if different options are possible (like picking among several .exe
68: files for the launch script), the first one will be selected
69: automatically.
70: If neither
71: .Fl i
72: nor
73: .Fl y
74: is specified,
75: .Nm
76: runs in restrictive mode, that is no drop-in DLLs will be installed.
1.7 thfr 77: .It Fl c Ar configfile
78: Optional. Use
79: .Ar configfile
80: for the configuration of
81: .Xr mono 1 .
82: This sets up dllmap/dllentry settings to use the correct libraries. See
83: .Xr mono-config 5
84: for details. If this option is omitted,
85: .Nm
86: looks first for
1.9 thfr 87: .Pa ~/.config/fnaify/fnaify.dllmap.config
1.7 thfr 88: and then for
1.9 thfr 89: .Pa /usr/local/share/fnaify/fnaify.dllmap.config .
1.7 thfr 90: If neither one is found,
91: .Nm
92: creates
93: .Pa ~/.config/fnaify/fnaify.dllmap.config
94: with default settings.
1.45 thfr 95: .It Fl D Ar depdir
1.1 thfr 96: Add
97: .Ar depdir
1.3 thfr 98: to the directories to search for native library dependencies.
99: A directory specified this way will be searched
1.1 thfr 100: .Em before
1.3 thfr 101: the default locations
102: .Pq Pa /usr/local/lib No etc. .
1.45 thfr 103: .It Fl d Ar gamedir
104: Path to the game's directory
105: .Pq defaults to the current working directory .
1.46 thfr 106: .It Fl F Ar frameworkversion
107: Choose a specific framework version to use.
1.45 thfr 108: .It Fl f Ar frameworkfile
109: Framework file to use. Typically
110: .Pa FNA.dll
111: or
112: .Pa MonoGame.Framework.dll .
113: By default will automatically identify the bundled file in the
114: game's directory.
115: .It Fl h
116: Prints help text.
1.1 thfr 117: .It Fl m Ar monopath
118: Add
119: .Ar monopath
1.3 thfr 120: to the directories the
121: .Xr mono 1
122: runtime will search for DLLs.
1.51 thfr 123: .It Fl n
124: Skip checks for library dependencies.
1.45 thfr 125: .It Fl s
1.46 thfr 126: Force (re-)running setup.
1.45 thfr 127: .It Fl V
128: Display version of
129: .Nm .
1.1 thfr 130: .It Fl v
131: Verbose mode.
1.45 thfr 132: .It Ar userflags
1.3 thfr 133: Optional.
1.45 thfr 134: Flags that are passed to the game as arguments
1.1 thfr 135: .El
136: .Sh SUPPORTED GAMES
1.3 thfr 137: .Bl -item -compact
138: .It
1.1 thfr 139: The Adventures of Shuggy
1.3 thfr 140: .It
1.6 thfr 141: Akane the Kunoichi
142: .It
143: Amazing Princess Sarah
144: .It
1.1 thfr 145: Apotheon
1.3 thfr 146: .It
1.6 thfr 147: Apple Jack 1&2
148: .It
1.19 thfr 149: Atom Zombie Smasher
150: .It
1.36 thfr 151: A Virus Named TOM [!]
152: .It
1.25 thfr 153: Before the Echo [!]
1.40 thfr 154: .It
155: Bird Assassin
1.24 thfr 156: .It
1.1 thfr 157: Bleed
1.3 thfr 158: .It
1.1 thfr 159: Bleed 2
1.3 thfr 160: .It
1.1 thfr 161: Breath of Death VII
1.3 thfr 162: .It
1.1 thfr 163: Brushwood Buddies
1.3 thfr 164: .It
1.37 thfr 165: Camera Obscura
166: .It
1.1 thfr 167: Capsized
1.3 thfr 168: .It
1.37 thfr 169: Celeste (no audio)
1.19 thfr 170: .It
1.1 thfr 171: Chaos Heart
1.3 thfr 172: .It
1.1 thfr 173: Charlie Murder
1.3 thfr 174: .It
1.1 thfr 175: Chasm
1.3 thfr 176: .It
1.1 thfr 177: CometStriker
1.3 thfr 178: .It
1.1 thfr 179: Cryptark
1.57 ! thfr 180: .It
! 181: Crystal Project
1.3 thfr 182: .It
1.23 thfr 183: Cthulhu Saves the World
1.3 thfr 184: .It
1.1 thfr 185: Curse of the Crescent Isle DX
1.3 thfr 186: .It
1.1 thfr 187: Dad Quest
1.3 thfr 188: .It
1.22 thfr 189: Dead Pixels [!]
1.6 thfr 190: .It
1.22 thfr 191: Dead Pixels II [!]
1.52 thfr 192: .It
193: Diehard Dungeon
1.3 thfr 194: .It
1.1 thfr 195: The Dishwasher: Vampire Smile
1.3 thfr 196: .It
1.6 thfr 197: Draw a Stickman: EPIC
198: .It
1.1 thfr 199: Dust: An Elysian Tail
1.3 thfr 200: .It
1.38 thfr 201: Eagle Island
202: .It
1.15 thfr 203: Eliza
204: .It
1.1 thfr 205: Escape Goat
1.3 thfr 206: .It
1.1 thfr 207: Escape Goat 2
1.3 thfr 208: .It
1.15 thfr 209: EXAPUNKS
210: .It
1.1 thfr 211: FEZ
1.3 thfr 212: .It
1.1 thfr 213: Fist Puncher
1.3 thfr 214: .It
1.1 thfr 215: Flinthook
1.3 thfr 216: .It
1.1 thfr 217: Flotilla
1.6 thfr 218: .It
1.1 thfr 219: Gateways
1.50 thfr 220: .It
221: Glitchangels
1.3 thfr 222: .It
1.22 thfr 223: Grand Class Melee 2 [!]
1.6 thfr 224: .It
1.1 thfr 225: Growing Pains
1.3 thfr 226: .It
1.24 thfr 227: HackNet
1.3 thfr 228: .It
1.32 thfr 229: Hidden in Plain Sight
230: .It
1.42 thfr 231: Hive
1.3 thfr 232: .It
1.1 thfr 233: Hyphen
1.3 thfr 234: .It
1.1 thfr 235: Jon Shafer's At the Gates
1.3 thfr 236: .It
1.26 thfr 237: LaserCat
1.3 thfr 238: .It
1.13 thfr 239: Little Racers STREET
240: .It
1.1 thfr 241: Mercenary Kings
1.19 thfr 242: .It
1.56 thfr 243: Miasma: Citizens of Free Thought
244: .It
1.19 thfr 245: MidBoss
1.53 thfr 246: .It
247: Mobius Front '83
1.3 thfr 248: .It
1.15 thfr 249: Molek-Syntez
250: .It
1.32 thfr 251: Mount Your Friends [!]
1.16 thfr 252: .It
253: NeuroVoider
1.4 thfr 254: .It
1.1 thfr 255: Ninja Warrior
1.3 thfr 256: .It
1.28 thfr 257: One Finger Death Punch
1.3 thfr 258: .It
1.29 thfr 259: Opus Magnum
1.15 thfr 260: .It
1.1 thfr 261: Overdriven Reloaded
1.3 thfr 262: .It
1.1 thfr 263: Owlboy
1.3 thfr 264: .It
1.1 thfr 265: Paladin
1.3 thfr 266: .It
1.1 thfr 267: Penny Arcade's On the Rain-Slick Precipice of Darkness 3
1.3 thfr 268: .It
1.1 thfr 269: Penny Arcade's On the Rain-Slick Precipice of Darkness 4
1.6 thfr 270: .It
1.30 thfr 271: Phoenix Force
1.3 thfr 272: .It
1.32 thfr 273: PlanetFriend
274: .It
1.31 thfr 275: Press X to Not Die
1.3 thfr 276: .It
1.1 thfr 277: Rex Rocket
1.3 thfr 278: .It
1.1 thfr 279: Rogue Legacy
1.3 thfr 280: .It
1.32 thfr 281: Ruggnar
282: .It
1.1 thfr 283: Salt and Sanctuary
1.3 thfr 284: .It
1.32 thfr 285: Session Seven
286: .It
1.18 thfr 287: Shenzhen I/O
288: .It
1.1 thfr 289: Shipwreck
1.39 thfr 290: .It
291: Signs of Life
1.3 thfr 292: .It
1.1 thfr 293: Skulls of the Shogun
1.3 thfr 294: .It
1.1 thfr 295: Soulcaster 1 & 2
1.3 thfr 296: .It
1.32 thfr 297: SpaceChem [!]
1.20 thfr 298: .It
1.1 thfr 299: SpeedRunners
1.3 thfr 300: .It
1.1 thfr 301: Stardew Valley
1.54 thfr 302: .It
303: Steel Assault
1.3 thfr 304: .It
1.1 thfr 305: Sumico
1.3 thfr 306: .It
1.32 thfr 307: Super Amazing Wagon Adventure [!]
1.3 thfr 308: .It
1.4 thfr 309: Super Blood Hockey
310: .It
1.1 thfr 311: Super Rad Raygun
1.4 thfr 312: .It
1.32 thfr 313: Sword of the Stars: The Pit [!]
1.3 thfr 314: .It
1.11 thfr 315: Terraria
316: .It
1.1 thfr 317: Timespinner
1.3 thfr 318: .It
1.1 thfr 319: TowerFall: Ascension
1.3 thfr 320: .It
1.32 thfr 321: Ultra Hat Dimension
322: .It
1.1 thfr 323: Unexplored
1.3 thfr 324: .It
1.55 thfr 325: Unholy Heights
1.3 thfr 326: .It
1.1 thfr 327: The Useful Dead
1.3 thfr 328: .It
1.32 thfr 329: Weapon of Choice [!]
1.36 thfr 330: .It
331: Wizorb
1.3 thfr 332: .It
1.1 thfr 333: Wyv and Keep
1.3 thfr 334: .El
1.1 thfr 335: .Sh FILES
336: .Bl -tag -width Ds
1.10 thfr 337: .It Pa /usr/local/share/fnaify/fnaify.dllmap.config
338: Default configuration file to map DLLs to native libraries.
1.9 thfr 339: .It Pa ~/.config/fnaify/fnaify.dllmap.config
1.10 thfr 340: User directory configuration file. Takes precedence if it exists.
1.15 thfr 341: Make sure to keep it up-to-date!
1.1 thfr 342: .El
343: .Sh EXIT STATUS
344: .Nm
1.47 thfr 345: returns 1 if an error occurred, otherwise 0.
1.1 thfr 346: .Sh EXAMPLES
347: Run in permissive mode, suitable to set up most supported games
348: automatically.
349: .Pp
1.47 thfr 350: .Dl $ fnaify -y -d path/to/game/directory
1.1 thfr 351: .Pp
352: Run in interactive mode.
353: .Nm
354: will prompt the user if any additional DLLs are recommended, or if a
355: file needs to be selected for the launch script.
356: .Pp
1.47 thfr 357: .Dl $ fnaify -i
1.1 thfr 358: .Sh SEE ALSO
1.7 thfr 359: .Xr mono 1 ,
360: .Xr mono-config 5
1.1 thfr 361: .Sh HISTORY
362: The
363: .Nm
364: utility was originally created in December 2017 by
1.7 thfr 365: .An Thomas Frohwein Aq Mt thfr@openbsd.org .
1.2 thfr 366: .Sh RELEASE HISTORY
367: .Bl -tag -width Ds
1.33 thfr 368: .It 3.0
1.44 thfr 369: Stop creating launch script. Instead use fnaify for both
370: setup and launch.
1.17 thfr 371: Support for several Zachtronics games. Add libstubborn use to dllmap.
372: Symlinking for MonoGame, e.g. NeuroVoider.
1.49 thfr 373: Preferential use of installed FNA.dll over bundled one.
1.14 thfr 374: .It 2.2
375: Fix config for mono 6. Add support for libcestub.
1.8 thfr 376: .It 2.1
1.12 thfr 377: Support for additional XNA games. Add MONO_FORCE_COMPAT quirk.
1.2 thfr 378: .It 2.0
1.3 thfr 379: Add support for XNA games.
1.35 thfr 380: Introduce interactivity flags
1.2 thfr 381: .Fl i | y
382: to facilitate adding in needed assemblies/libraries.
383: .It 1.3
1.3 thfr 384: Add prompt to download and replace
385: .Pa FNA.dll
386: if incompatible version is found.
387: Detect steamstubs directory and use Steamworks stubs if present.
1.2 thfr 388: .It 1.2
389: FreeBSD portability fixes, account for more special cases (MidBoss,
390: Adventures of Shuggy, Atom Zombie Smasher), add directory path to plug
391: in additional libraries.
392: .It 1.1
393: Fix bug selecting .exe by separating input variables.
394: .It 1.0
395: Initial release.
396: .El
1.1 thfr 397: .Sh AUTHORS
398: .An -nosplit
399: .An Thomas Frohwein Aq Mt thfr@openbsd.org
1.48 thfr 400: .An Mariusz Zaborski
Contact: <mail@mail.thfr.info>