Exult (Ultima VII) compiled for IRIX (finally)

IRIX/Nekoware development, porting and related topics.
Forum rules
Any posts concerning pirated software or offering to buy/sell/trade commercial software are subject to removal.
User avatar
necron2600
Posts: 214
Joined: Tue May 26, 2015 10:38 pm
Location: Boston

Exult (Ultima VII) compiled for IRIX (finally)

Unread postby necron2600 » Wed Nov 30, 2016 11:30 pm

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 27 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 23 times

User avatar
Geoman
Donor
Donor
Posts: 816
Joined: Thu May 26, 2005 3:37 am
Location: Munich, Germany
Contact:

Re: Exult (Ultima VII) compiled for IRIX (finally)

Unread postby Geoman » Thu Dec 01, 2016 10:01 am

You Sir rock!
:Indy: :O2: :O2: :Indigo: :Indigo2IMP: :Octane: :Octane2: :Octane2:
SGI - the legend will never die!!


Return to “SGI: Development”

Who is online

Users browsing this forum: No registered users and 2 guests