SGI: Development

Exult (Ultima VII) compiled for IRIX (finally)

Ultima VII in DOSBox on IRIX did not work so well. Exult would play it so much better.

Finally got Exult compiled for IRIX. I went to their latest snapshot in order to get a lot of coding bugs resolved.
Tested maybe 2 minutes runtime so who knows how good it will work.. its 2am so getting tired.

Compiled with nekoware.. GCC 4.7.1

Environment:
CC=gcc
CXX=G++
CXXFLAGS="-O3 -mabi=n32 -I/usr/nekoware/include -I/usr/include"
CPPFLAGS="-O3 -mabi=n32 -I/usr/nekoware/include -I/usr/include"
CFLAGS="-O3 -mabi=n32 -I/usr/nekoware/include -I/usr/include"
PATH="/usr/nekoware/bin:$PATH"
LDFAGS="-L/usr/nekoware/lib -L/usr/lib32"
LD_LIBRARY_PATH=/usr/nekoware/lib:/usr/lib32

Run autogen.sh
For some reason, the generated configure script has lots of syntax errors on IRIX relating to lines like:
AX_CHECK_COMPILE_FLAG($opt_flag, DEBUG_FLAGS="$DEBUG_FLAGS $opt_flag", , $DEBUG_FLAGS -Werror)
I just commented them out.. nothing critical.
Run ./configure

I added
/* C99: 7.12 6 defines for floating point classification */
#define FP_ZERO 1
#define FP_SUBNORMAL 2
#define FP_NORMAL 4
#define FP_INFINTE 8
#define FP_NAN 16

to the top of the following files:
headers/gamma.h
audio/midi_drivers/timidity/timidity_tables.h
audio/midi_drivers/timidity/timidity_filter.cpp
audio/midi_drivers/timidity/timidity.h
audio/midi_drivers/timidity/timidity_mix.cpp
headers/pent_include.h

While the above will compile, the game will crash after the splash screen (bus error).
Googling around found an IRC chat log from a decade ago with someone compiling Exult on a sharp Zaurus.
There is a file: ibuff8.cc to modify:
Comment out: #if !(defined(__sparc__) || defined(UNDER_CE))
and add:
#if 0
So the section that has sparc or CE defines will work for IRIX too.
I know this is a hack, and something more elegant __irix__ ,etc. should be done, but ill leave that up to the developers ;)

run ./gmake
wait an hour or so on an Octane2
run gmake install as root user.. so stuff gets installed to /usr/local/

Find your legally purchased copies of Ultima VII Black Gate and Serpent Isle, or where ever you feel you want to get the software.. and copy them to /usr/local/share/exult/blackgate and serpentisle directories that you need to create.

As a user, run exult that is @ /usr/local/bin/exult. it creates a default .exult.cfg in your home dir as well as populating files in .exult directory in your home dir.

Attached is a tarball of usr. Just extract from / as root user. its not compressed, so its a 41MB file.
It uses nekoware's timidity, SDL 1.2, libiconv, libogg, libvorbis, libvorbisfile, and libz

exult-irix-mips4.tar
Exult for IRIX binaries
(41.18 MiB) Downloaded 29 times


I am also attaching the original source code used.

exult-1.5-svn-snapshot.zip
Original source code to Exult from snapshot on 11-30-2016
(5.58 MiB) Downloaded 24 times
You Sir rock!
:Indy: :O2: :O2: :Indigo: :Indigo2IMP: :Octane: :Octane2: :Octane2:
SGI - the legend will never die!!