Exult instructions for Windows
------------------------------------


To play
---------
First you need to get Ultima 7 or Serpent Isle. Either you own it already, or
you buy it somewhere.  Then you must install it. Note that the Ultima Collection
already contains an installed copy of Ultima 7 (In the Ultima7 directory) and of
Serpent Isle (In the Serpent directory).

From the Ultima7 or Serpent folder on your PC, copy the STATIC sub folder to the
'blackgate' or 'serpentisle' sub folder (as appropriate) of the folder you
installed Exult in (you will likely have to create the sub folders yourself).

Run "exult.exe".
Have fun!


Notes
------
*	Exult generates the files 'stdout.txt' and 'stderr.txt' when you run it.
	These may give you some idea of what is going on under the hood. When Exult
	suddenly quits, sometimes these files can help.

*	Exult Studio generates the files 'studioout.txt' and 'studioerr.txt' when
	you run it. These may give you some idea of what is going on under the hood.
	When Exult Studio suddenly quits, sometimes these files can help.

*	If you're interested in building Exult for windows yourself, there are two
	sections below describing how. In the instructions below, reference is made
	to changing environment variables; how this is done exactly depends on the
	version of Windows you use. Here are some instructions:
	-	For Windows NT/2000:
		http://support.microsoft.com/kb/100843
	-	For Windows XP/Server/Vista:
		http://support.microsoft.com/kb/310519
	(incidentally, the XP instructions are good for all of those systems)
	-	For Windows 9x/Me:
		You have to set them in autoexec.bat using the "set" command.


To build in Windows using MinGW
-----------------------------------
(Thanks to Travis Howell)

Download various MinGW packages from:
http://sourceforge.net/projects/mingw/files/MinGW/Base/binutils/binutils-2.21/binutils-2.21-3-mingw32-bin.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/gcc-core-4.6.2-1-mingw32-bin.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/libgcc-4.6.2-1-mingw32-dll-1.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/gcc-c%2B%2B-4.6.2-1-mingw32-bin.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/libstdc%2B%2B-4.6.2-1-mingw32-dll-6.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/gmp-5.0.1-1-mingw32-dev.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/libgomp-4.6.2-1-mingw32-dll-1.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gettext/gettext-0.17-1/libintl-0.17-1-mingw32-dll-8.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.13.1-1/libiconv-1.13.1-1-mingw32-dev.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.13.1-1/libiconv-1.13.1-1-mingw32-dll-2.tar.lzma/download
https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-mingw32-dev.tar.gz/download
https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-mingw32-dll.tar.gz/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/mpc-0.8.1-1-mingw32-dev.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/mpfr-2.4.1-1-mingw32-dev.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.8.0-3/pthreads-w32-2.8.0-3-mingw32-dev.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.8.0-3/libpthread-2.8.0-3-mingw32-dll-2.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/libssp-4.6.2-1-mingw32-dll-0.tar.lzma/download
http://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-3.17/w32api-3.17-2-mingw32-dev.tar.lzma/download

Install MinGW packages:
Create a directory called mingw in the root directory of drive (ie C:\MinGW\ )
Extract all the mingw packages to the mingw directory

Download and install MSYS from:
	http://prdownloads.sourceforge.net/mingw/MSYS-1.0.10.exe

Download the SDL2 binaries & headers from:
	http://exult.sourceforge.net/snapshots/exult_sdl2_win32.zip
Unzip this file into the main directory of Exult source code. (it should add a
SDL subdirectory)

NOTE: Our developer packages were compiled with GCC 4.6.2, and might not work with
later GCC versions, due to backwards compatibility been broken between GCC versions.

Download the other required developer tools from:
	http://exult.sourceforge.net/snapshots/exult_dev_win32.zip
Unzip this file into the MinGW directory.

If you want to compile Exult Studio get the additional required developer tools
from the following address:
	http://exult.sourceforge.net/snapshots/exult_studio_dev_win32.zip
Unzip this file into the MinGW directory. This file contains various files that
are required for compiling and running Exult Studio, such as GTK+ libraries. If
this file is your only source for GTK+, you will want to execute the next step.

For Exult Studio, you may have to set a couple of environment variables that
will tell were are the files it needs to run. This step is crucial if your only
source for GTK+ runtime files is the Exult Studio developer tools package.
However, if the GTK_BASEPATH already exists and is set to a valid directory, you
likely have GTK+ installed already and can skip this step entirely.
	-	GTK_BASEPATH: Set this variable to the full path of your GTK+ directory.
		Example:
			If you used the Exult Studio developer tools above, this is the
			directory to which you unzipped the files: your MinGW directory.
	-	PATH: You will want to *append* to this variable. The text you want to
		append is '%GTK_BASEPATH%\bin' (without the single-quotes); but first,
		make sure that this text is not already in there. To append it, add a
		semi-colon (;) at the end of the text (if one is not already there) then
		append '%GTK_BASEPATH%\bin' (again, without the single-quotes).
		Example:
			This value:
				%SystemRoot%\system32;%SystemRoot%;
			gets changed to this:
				%SystemRoot%\system32;%SystemRoot%;%GTK_BASEPATH%\bin
Your environment will then be set so that you can run Exult Studio.

Start MSYS

Change to the directory where you unpacked the Exult source code.
(ie cd C:/exult )

Open makefile.mingw from the Exult directory in a text editor and change
C:/Ultima7 to the directory you want Exult to be installed to.
(ie C:/Games/Ultima7 )

If you are compiling Exult Studio, it will be installed to the same directory
that Exult when you compile it. You can change that directory in the same way.

To compile and install Exult, type the command
	make -f makefile.mingw install

To compile and install the Exult Tools, type the command
	make -f makefile.mingw toolsinstall

To compile and install Exult Studio, type the command
	make -f makefile.mingw studioinstall

If you want to make more than one, you can combine the commands; for example,
to build Exult and the Exult Tools, you can type the command
	make -f makefile.mingw install toolsinstall

Exult Studio requires several files to run properly. The best way to deal with
these requirements is to set environment variables, as described above (the last
step before 'Start MSYS'). Another way is to copy several files and directories
to the same directory as the Exult Studio executable; the easiet way would be to
simply extract the Exult Studio developer tools to this directory; not all of
those files are required, but this way is easier than figuring out which are
required and which are not.

Once compile has finished and been installed exit MSYS

Run Exult.exe and enjoy the game :-)


To build in Windows using MSVC 6.0
----------------------------------

1) Download SDL and ZLib for Win32/MSVC6. Add their Include and Library
directories to MSVC's Search Directories (Tools->Options->Directories).

SDL: http://www.libsdl.org/
ZLib: http://www.gzip.org/zlib/

2) Set The environment variable EXULT_INSTALL_PATH to the directory where you
want the Exult binaries to be copied to when doing an Install Build. This is
optional and is only required for when doing an Install build.

3) Load the Exult Project Workspace "msvcstuff/Exult.dsw" in MSVC 6.0
(File->Load Workspace)

4) If required, enter the correct "Working Directory" in the "Debug tab" of the
Exult project settings for all Configurations.

5) Select and Build Exult using one of the 4 Configuration (Win32 Debug,
Win32 Release, Win32 Debug Install or Win32 Release Install).

6) Have Fun!


To cross-build from Linux
---------------------------
(Note: this hasn't been tested recently, and may or may not work)

Exult is originally a Linux project, using a platform
independent API called SDL. (Simple DirectMedia Layer)

Because of this, the Windows version has been built in
Linux, using the cross-compiler Mingw32.

Please note it is not necessary to build Exult yourself,
since the Windows executable is already included.

1) get and install Mingw32 and SDL.

SDL: http://www.libsdl.org/index.php

Mingw32: http://www.libsdl.org/extras/win32/cross/README.txt

Installation instructions can be found on the same pages.
(make sure to get the DirectX headers, and build SDL for the cross compiler)

2) build exult:

configure --host=i386-linux --target=i386-mingw32 --enable-win32
make

3) copy exult.exe to your U7 directory, and run it from windows
If you are currently playing a game of Ultima 7, be sure
to make a backup of the gamedat directory.
 
4) Have fun :-)

