Here's my writeup on getting this to work. A lot of stuff is going to be glossed over, so you need to be technical.
Here's the sources I used to get this to work. You don't have to read them, but you're curious, it'll shed some light on the problems Wine has with FFXI.
Wine compilation problemsWine runtime deadlock problemsDLL's neededPrerequisites:
- A Windows installation with Visual Studio 2013 (YES, IT NEEDS TO BE 2013!). If you don't have Windows, you can download Windows 10 and install it in a virtual machine, which is what I did.
- GCC and autoconf
- PlayOnLinux or WineTricks
- Wine 1.3.37 and any sources it relies on (you're on your own for that one)
- xiloader source
Let's get the Windows part out of the way first. Log into your Windows machine and pull the xiloader source code. Open Visual Studio and open the xiloader project. Compile a release version and place the compiled binary on your Linux box.
Go back to your Linux box. Be sure you have all of the development libraries you need for compiling 1.3.37. Your distribution should supply them through its package manager. Download the Wine 1.3.37 source code and extract it. Open dlls/imm32/imm.c and delete lines 1378-1379 (See the "Wine runtime deadlock problems" link for more details).
Then, at the root of the Wine source directory, create this script and run it. It's patching the source code to use a more recent lexer.
Code:
#!/bin/sh
PATCHES=(
3f98185fb8f88c181877e909ab1b6422fb9bca1e
8fcac3b2bb8ce4cdbcffc126df779bf1be168882
bda5a2ffb833b2824325bd9361b30dbaf5f78068
c14e322a92a24e704836c5c12207c694a30e805f
f86c46f6403fe338a544ab134bdf563c5b0934ae
ffbe1ca986bd299e1fc894440849914378adbf5c
)
for i in "${PATCHES[@]}"
do
# Check if patch file exists in directory
if [ -f $i ];
then
echo "$i file exists"
else
echo "$i file doesn't exist, downloading:"
curl "http://source.winehq.org/git/wine.git/patch/$i" -o $i
fi
# Apply patch if necessary
if nohup patch -p1 -N --dry-run --silent <$i 2>/dev/null; then
echo "$i Patching now:"
patch -p1 < $i
else
echo "$i Already applied"
fi
echo
done
Compile and install.
Be sure the Wine binary you just compiled is first on your PATH and not any other version of Wine you might have. Create a new WINEPREFIX dedicated to FFXI. You can do this manually or through PlayOnLinux. After creating a new prefix, use PlayOnLinux or winetricks to install these packages:
- dinput8
- directmusic
- directplay
- dotnet20
- dotnet20sp1
- dotnet20sp2
- dotnet30
- dotnet30sp1
- dotnet35
- dotnet35sp1
- ffdshow
- gdiplus
- quartz
- vcrun2005
- vcrun2008
- vcrun2010
- xact
- xinput
Now, follow the
installation instructions, steps 1 through 10. You're expected to know how to do this with Wine. After FFXI has been installed and updated, get the xiloader binary you compiled from Windows and run:
Code:
wine xiloader.exe --server nasomi.com
After creating an account and logging in, you should be good to go.