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