version 1.2, 2019/09/21 20:02:52 |
version 1.40, 2020/08/08 04:29:54 |
|
|
.Os |
.Os |
.Sh NAME |
.Sh NAME |
.Nm fnaify |
.Nm fnaify |
.Nd script to get FNA-based games ready to run on OpenBSD |
.Nd run FNA/XNA games on OpenBSD |
.Sh SYNOPSIS |
.Sh SYNOPSIS |
.Nm |
.Nm |
.Op Fl i | y |
.Op Fl i | y |
.Op Fl hv |
.Op Fl hv |
|
.Op Fl c Ar configfile |
.Op Fl d Ar depdir |
.Op Fl d Ar depdir |
.Op Fl m Ar monopath |
.Op Fl m Ar monopath |
.Op Ar gamedir |
.Op Ar gamedir |
.Sh DESCRIPTION |
.Sh DESCRIPTION |
.Nm |
.Nm |
sets up games based on the FNA engine to operate with OpenBSD-native |
sets up games based on the FNA engine to operate with OpenBSD-native |
libraries and its mono(1) runtime. |
libraries and its |
|
.Xr mono 1 |
|
runtime. |
.Pp |
.Pp |
As of version 2.0, |
As of version 2.0, |
.Nm |
.Nm |
has been extended to attempt configuring XNA games as well. |
has been extended to attempt configuring XNA games as well. |
.Nm |
.Nm |
can be run in 3 basic modes regarding the addition of missing libraries |
can be run in 3 basic modes regarding the addition of missing libraries: |
- restrictive, interactive, and permissive. |
restrictive, interactive, and permissive. |
.Pp |
.Pp |
|
All games require additional libraries from ports, like SDL2. Some of |
|
them can be found in fnaify-extralibs package, like libatomstb or |
|
libfmod_SDL. |
|
.Pp |
The arguments are as follows: |
The arguments are as follows: |
.Bl -tag -width Ds |
.Bl -tag -width Ds |
.It Fl i | y |
.It Fl i | y |
|
|
be addressed with drop-in DLL replacements, or where an option needs to |
be addressed with drop-in DLL replacements, or where an option needs to |
be selected. |
be selected. |
With |
With |
.Fl i |
.Fl i , |
, |
|
.Nm |
.Nm |
runs in interactive mode, meaning the user will be prompted in every |
runs in interactive mode, meaning the user will be prompted in every |
case. |
case. |
With |
With |
.Fl y |
.Fl y , |
, |
|
.Nm |
.Nm |
runs in permissive mode ( |
runs in permissive mode |
|
.Po |
.Fl y |
.Fl y |
for |
for |
.Qq yes |
.Dq yes |
to all). This means that any suggested drop-in DLLs will be installed, |
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 |
and if different options are possible (like picking among several .exe |
files for the launch script), the first one will be selected |
files for the launch script), the first one will be selected |
automatically. |
automatically. |
|
|
is specified, |
is specified, |
.Nm |
.Nm |
runs in restrictive mode, that is no drop-in DLLs will be installed. |
runs in restrictive mode, that is no drop-in DLLs will be installed. |
|
.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 |
.It Fl d Ar depdir |
Add |
Add |
.Ar depdir |
.Ar depdir |
to the directories to search for native library dependencies. A |
to the directories to search for native library dependencies. |
directory specified this way will be searched |
A directory specified this way will be searched |
.Em before |
.Em before |
the default locations ( |
the default locations |
.Pa /usr/local/lib |
.Pq Pa /usr/local/lib No etc. . |
etc.). |
|
.It Fl m Ar monopath |
.It Fl m Ar monopath |
Add |
Add |
.Ar monopath |
.Ar monopath |
to the directories the mono(1) runtime will search for DLLs. |
to the directories the |
|
.Xr mono 1 |
|
runtime will search for DLLs. |
.It Fl h |
.It Fl h |
Prints help text. |
Prints help text. |
.It Fl v |
.It Fl v |
Verbose mode. |
Verbose mode. |
.It Ar gamedir |
.It Ar gamedir |
Optional. Path to the game directory to process. If not specified, the current working directory will be used. |
Optional. |
|
Path to the game directory to process. |
|
If not specified, the current working directory will be used. |
.El |
.El |
.Sh SUPPORTED GAMES |
.Sh SUPPORTED GAMES |
|
.Bl -item -compact |
|
.It |
The Adventures of Shuggy |
The Adventures of Shuggy |
.br |
.It |
|
Akane the Kunoichi |
|
.It |
|
Amazing Princess Sarah |
|
.It |
Apotheon |
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 |
Bleed |
.br |
.It |
Bleed 2 |
Bleed 2 |
.br |
.It |
Breath of Death VII |
Breath of Death VII |
.br |
.It |
Brushwood Buddies |
Brushwood Buddies |
.br |
.It |
|
Camera Obscura |
|
.It |
Capsized |
Capsized |
.br |
.It |
|
Celeste (no audio) |
|
.It |
Chaos Heart |
Chaos Heart |
.br |
.It |
Charlie Murder |
Charlie Murder |
.br |
.It |
Chasm |
Chasm |
.br |
.It |
CometStriker |
CometStriker |
.br |
.It |
Cryptark |
Cryptark |
.br |
.It |
Cthulhu Saves the World |
Cthulhu Saves the World |
.br |
.It |
Curse of the Crescent Isle DX |
Curse of the Crescent Isle DX |
.br |
.It |
Dad Quest |
Dad Quest |
.br |
.It |
Dead Pixels II |
Dead Pixels [!] |
.br |
.It |
|
Dead Pixels II [!] |
|
.It |
The Dishwasher: Vampire Smile |
The Dishwasher: Vampire Smile |
.br |
.It |
|
Draw a Stickman: EPIC |
|
.It |
Dust: An Elysian Tail |
Dust: An Elysian Tail |
.br |
.It |
|
Eagle Island |
|
.It |
|
Eliza |
|
.It |
Escape Goat |
Escape Goat |
.br |
.It |
Escape Goat 2 |
Escape Goat 2 |
.br |
.It |
|
EXAPUNKS |
|
.It |
|
Explosionade [!] |
|
.It |
FEZ |
FEZ |
.br |
.It |
Fist Puncher |
Fist Puncher |
.br |
.It |
Flinthook |
Flinthook |
.br |
.It |
Flotilla |
Flotilla |
.br |
.It |
|
Game Type [!] |
|
.It |
Gateways |
Gateways |
.br |
.It |
|
Grand Class Melee 2 [!] |
|
.It |
Growing Pains |
Growing Pains |
.br |
.It |
HackNet |
HackNet |
.br |
.It |
Hive |
Hidden in Plain Sight |
.br |
.It |
|
Hive [!] - sometimes doesn't start up |
|
.It |
Hyphen |
Hyphen |
.br |
.It |
Jon Shafer's At the Gates |
Jon Shafer's At the Gates |
.br |
.It |
|
Khet 2.0 |
|
.It |
LaserCat |
LaserCat |
.br |
.It |
|
Little Racers STREET |
|
.It |
Mercenary Kings |
Mercenary Kings |
.br |
.It |
|
MidBoss |
|
.It |
|
Molek-Syntez |
|
.It |
|
Mount Your Friends [!] |
|
.It |
|
NeuroVoider |
|
.It |
Ninja Warrior |
Ninja Warrior |
.br |
.It |
One Finger Death Punch |
One Finger Death Punch |
.br |
.It |
|
Opus Magnum |
|
.It |
Overdriven Reloaded |
Overdriven Reloaded |
.br |
.It |
Owlboy |
Owlboy |
.br |
.It |
Paladin |
Paladin |
.br |
.It |
Penny Arcade's On the Rain-Slick Precipice of Darkness 3 |
Penny Arcade's On the Rain-Slick Precipice of Darkness 3 |
.br |
.It |
Penny Arcade's On the Rain-Slick Precipice of Darkness 4 |
Penny Arcade's On the Rain-Slick Precipice of Darkness 4 |
.br |
.It |
|
Phoenix Force |
|
.It |
|
PlanetFriend |
|
.It |
Press X to Not Die |
Press X to Not Die |
.br |
.It |
Rex Rocket |
Rex Rocket |
.br |
.It |
Rogue Legacy |
Rogue Legacy |
.br |
.It |
|
Ruggnar |
|
.It |
Salt and Sanctuary |
Salt and Sanctuary |
.br |
.It |
|
Session Seven |
|
.It |
|
Shenzhen I/O |
|
.It |
Shipwreck |
Shipwreck |
.br |
.It |
|
Signs of Life |
|
.It |
Skulls of the Shogun |
Skulls of the Shogun |
.br |
.It |
Soulcaster 1 & 2 |
Soulcaster 1 & 2 |
.br |
.It |
|
SpaceChem [!] |
|
.It |
SpeedRunners |
SpeedRunners |
.br |
.It |
Stardew Valley |
Stardew Valley |
.br |
.It |
Sumico |
Sumico |
.br |
.It |
Super Amazing Wagon Adventure |
Super Amazing Wagon Adventure [!] |
.br |
.It |
|
Super Blood Hockey |
|
.It |
Super Rad Raygun |
Super Rad Raygun |
.br |
.It |
|
Sword of the Stars: The Pit [!] |
|
.It |
|
Terraria |
|
.It |
Timespinner |
Timespinner |
.br |
.It |
TowerFall: Ascension |
TowerFall: Ascension |
.br |
.It |
|
Ultra Hat Dimension |
|
.It |
Unexplored |
Unexplored |
.br |
.It |
Unholy Heights (no audio) |
Unholy Heights (no audio) |
.br |
.It |
The Useful Dead |
The Useful Dead |
.br |
.It |
|
Weapon of Choice [!] |
|
.It |
Wizorb |
Wizorb |
.br |
.It |
Wyv and Keep |
Wyv and Keep |
|
.El |
.Sh FILES |
.Sh FILES |
.Bl -tag -width Ds |
.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 |
.It Pa ~/.config/fnaify/fnaify.dllmap.config |
Configuration file to map DLLs to native libraries, based on OpenBSD |
User directory configuration file. Takes precedence if it exists. |
library naming. |
Make sure to keep it up-to-date! |
.El |
.El |
.Sh EXIT STATUS |
.Sh EXIT STATUS |
.Nm |
.Nm |
|
|
.Pp |
.Pp |
.Dl $ fnaify -i path/to/game/directory |
.Dl $ fnaify -i path/to/game/directory |
.Sh SEE ALSO |
.Sh SEE ALSO |
.Xr mono 1 |
.Xr mono 1 , |
|
.Xr mono-config 5 |
.Sh HISTORY |
.Sh HISTORY |
The |
The |
.Nm |
.Nm |
utility was originally created in December 2017 by |
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 |
.Sh RELEASE HISTORY |
.Bl -tag -width Ds |
.Bl -tag -width Ds |
|
.It 3.0 |
|
Enable modes (\fIsetup\fP, \fIrun\fP). |
|
Support for several Zachtronics games. Add libstubborn use to dllmap. |
|
Symlinking for MonoGame, e.g. NeuroVoider. |
|
.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 |
.It 2.0 |
Add support for XNA games. Introduce modes |
Add support for XNA games. |
|
Introduce interactivity flags |
.Fl i | y |
.Fl i | y |
to facilitate adding in needed assemblies/libraries. |
to facilitate adding in needed assemblies/libraries. |
.It 1.3 |
.It 1.3 |
Add prompt to download and replace FNA.dll if incompatible version is |
Add prompt to download and replace |
found. Detect steamstubs directory and use Steamworks stubs if present. |
.Pa FNA.dll |
|
if incompatible version is found. |
|
Detect steamstubs directory and use Steamworks stubs if present. |
.It 1.2 |
.It 1.2 |
FreeBSD portability fixes, account for more special cases (MidBoss, |
FreeBSD portability fixes, account for more special cases (MidBoss, |
Adventures of Shuggy, Atom Zombie Smasher), add directory path to plug |
Adventures of Shuggy, Atom Zombie Smasher), add directory path to plug |