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