Page 2 of 3

Posted: Tue Feb 14, 2006 10:27 am
by Spooky
Unfortunately I only get 35fps. This is due to the different hardware timer support in IRIX (one of the pitfalls of a true realtime operating system). Unless I ever get round to enabling CLOCK_SGI_FAST as the default Posix timer in SDL then it's never gonna get any quicker than that... at least it stays at 35fps :wink:

This machine is an SGI Origin 2000 and has 16 x 300 Mhz R12K MIPS processors with 8MB of cache each, 13.2 GB of RAM, a few 75G 10K SCSI drives and 10 x 10/100 network cards. It's also proper ccNUMA (not pretend NUMA or 'hypertransport' :twisted:) and is in fact two desksides craylinked to a single system image.

Image

It's my main 'workstation', it also hosts int13h.com, an IRC server, a MAngband server amongst a million other things and is a truely multiuser system... and it's not beige :D

Posted: Tue Feb 14, 2006 10:38 am
by Rxke
Aghlaghlaghl....

(wipes drool of keyboard)

Posted: Tue Feb 14, 2006 10:56 am
by winston
Spooky wrote:
Unfortunately I only get 35fps. This is due to the different hardware timer support in IRIX (one of the pitfalls of a true realtime operating system). Unless I ever get round to enabling CLOCK_SGI_FAST as the default Posix timer in SDL then it's never gonna get any quicker than that... at least it stays at 35fps :wink:
I'd be interested to know what frame rate you CAN get. Already that beats a 1GHz P3 laptop (probably due to better OpenGL hardware, since Oolite will only really use 1 CPU the other 15 CPUs otherwise don't give you an advantage over the P3 laptop).

My weird hardware is a MicroVAX (which would be well specced when it was new). It struggles with the authentication handshake with SSH :-) (I also have a 333MHz UltraSPARC II system, but the OpenGL hardware isn't worth a bucket of warm spit).

Posted: Tue Feb 14, 2006 11:06 am
by Spooky
Once I'm done with getting a working static build I'll make the changes to SDL, they are straight forward enough. I'm not sure how much quicker I'll get though because the MGRAS card in this machine is really pretty puny. I just wish Oolite wasn't objc code because then I could use the MIPSPro compilers and get some serious optimisations and auto-parallisation (yes, the compiler would attempt to break loops out into individual threads but obviously it's a bit on the 'results may vary' side).

If we're talking GL hardware then my wonderfully obsolete Onyx Reality Engine might be worth a quick compile on. Its only got 4 x 195Mhz R10K processors but it does have a 4 raster manager reality engine 2 graphics set. It's capable of running CAVE environments and reality rooms... now if only I had one of those, I'd love to see total emersion Oolite :D

Posted: Tue Feb 14, 2006 11:31 am
by JensAyton
Spooky: you could try the Portable Object Compiler, which transforms Objective-C into C code. It uses its own dialect of Objective-C and the author has a dogmatic dislike against OpenStep, though, so I don’t know whether it’d work on the Oolite source or if the output would work with the GNU ObjC runtime.

Posted: Tue Feb 14, 2006 11:38 am
by Spooky
Ahruman: I'd quite like to try and keep up to date with the releases of Oolite and I think trying to convert objc to C on an ongoing basis may be more hassle than it's worth. It's not like it's unplayable and once I sort the SDL problem I'm sure it will be positively splendid.

Posted: Tue Feb 14, 2006 12:29 pm
by Spooky
Oh dear :D

I switched over the timer routine in SDL_systimer to use CLOCK_SGI_FAST and the frame rate went all to hell. It bounces around between 18 and 29 and looks *REALLY* choppy. I think I might put this one into the 'to be investigated' box and go back to good old 35fps :wink:

Posted: Tue Feb 14, 2006 12:52 pm
by JensAyton
Ideally, POC would simply be a pre-processing step during compiling. After all, that’s how Objective-C (and C++) was originally used.

Posted: Wed Feb 15, 2006 10:06 am
by Spooky
Ok, I'm getting a step closer to a stand alone package. I've got all the libraries sorted, I've setup a simple execution script with all necesary environment variables to point to the libraries (hacky, but it works for now) and GNUstep. However when I try to run the app I get...

BlueThing 155# ./oolite
2006-02-15 10:00:09.787 oolite[208478] Disallowed time zone name `GMT0BST-1,M3.5.0/1,M10.5.0/2'.
2006-02-15 10:00:09.787 oolite[208478] Using time zone with absolute offset 0.
2006-02-15 10:00:09.786 oolite[208478] File NSUserDefaults.m: 549. In [NSUserDefaults +standardUserDefaults] Improper installation: No language locale found
2006-02-15 10:00:09.793 oolite[208478] Did not find correct version of backend, falling back to std.
2006-02-15 10:00:09.795 oolite[208478] NSApplication.m:271 Assertion failed in initialize_gnustep_backend. Unable to find backend back
./oolite: Uncaught exception NSInternalInconsistencyException, reason: NSApplication.m:271 Assertion failed in initialize_gnustep_backend. Unable to find backend back

Does anybody have any pointers for bundling a cut down version of GNUstep before I set about re-inventing the wheel? :wink:

Posted: Wed Feb 15, 2006 10:58 am
by winston
Yes. Have a look and see what's included in the oolite-linux deps directory (a link with WebSVN to where you need to look:)
http://svn.berlios.de/wsvn/oolite-linux ... rev=0&sc=0

See that GNUstep directory? That entire tree needs to be in the user's $HOME.
Also, in your installer script don't forget to:

mkdir -p $HOME/GNUstep/Library

or it will fail with an incomprehensible error message box.

But the long and the short of it - look at the Linux tarball binary packager. In the SelfContainedInstaller directory you'll find a shell script called 'install' as well as 'oolite.src' which is a shell script fragment. 'install' turns 'oolite.src' into an executable shell script called 'oolite' which sets the environment up correctly, as well as creating $HOME/GNUstep et al.

Posted: Wed Feb 15, 2006 11:19 am
by JensAyton
Winston: any luck in throwing out NSApplication in the SDL build?

Posted: Wed Feb 15, 2006 3:30 pm
by Spooky
winston:

Ok, I've duplicated your install script (That's a damn fine script by the way, simple and effective.) and .tar's and it installs fine. However on machines that I haven't previously installed GNUstep on I still get the errors (I also get the errors if I move my initial GNUstep folder)
2006-02-15 14:39:14.791 oolite[334867] Disallowed time zone name `GMT0BST-1,M3.5.0/1,M10.5.0/2'.
2006-02-15 14:39:14.791 oolite[334867] Using time zone with absolute offset 0.
2006-02-15 14:39:14.790 oolite[334867] File NSUserDefaults.m: 549. In [NSUserDefaults +standardUserDefaults] Improper installation: No language locale found
2006-02-15 14:39:14.795 oolite[334867] Did not find correct version of backend, falling back to std.
2006-02-15 14:39:14.797 oolite[334867] NSApplication.m:271 Assertion failed in initialize_gnustep_backend. Unable to find backend back
./oolite: Uncaught exception NSInternalInconsistencyException, reason: NSApplication.m:271 Assertion failed in initialize_gnustep_backend. Unable to find backend back
So far however I'm at a loss to work out why. There is a mention of a similar problem in the Oolite-Linux folder https://bb.oolite.space/viewtopic.php?t=926&. That proved to be a missing library affecting the gnustep backend. My backend file (GNUstep/System/Library/Bundles/libgnustep-back-010.bundle) is linked only to core IRIX libraries...
libGL.so => /usr/lib32/libGL.so
libXmu.so => /usr/lib32/libXmu.so
libXext.so => /usr/lib32/libXext.so
libX11.so.1 => /usr/lib32/libX11.so.1
libGLcore.so => /usr/lib32/libGLcore.so
libXsgivc.so => /usr/lib32/libXsgivc.so
libc.so.1 => /usr/lib32/libc.so.1
libXt.so => /usr/lib32/libXt.so
libgen.so => /usr/lib32/libgen.so
libm.so => /usr/lib32/libm.so

...so that scuppered that little plan :(

Getting desperate I ldd'ed the oolite executable and all of the required libraries and everything looks to be good. I've recursive grep'ed through the entire oolite-deps/GNUstep folder for mentions of my original install location and the only place it shows up is in the binary files themselves ergo my belief that I've done something retarded in my GNUstep install.

Without sounding like a complete idiot (or anymore than usual) can you give me your process for compilation and installation of GNUstep?

Posted: Wed Feb 15, 2006 5:08 pm
by winston
Spooky wrote:
Without sounding like a complete idiot (or anymore than usual) can you give me your process for compilation and installation of GNUstep?
- download GNUstep startup
- untar
- cd into untarred archive
- PATH=$PATH:.
- make

and that's it.

The warnings you see up to and including 'no language locale found' are normal for the minimalist cut-down GNUstep installation I package up with the installer; the line immediately after that in the log should be 'Initializing SDL'.

When I get home I'll post the ls -laR of my minimalist GNUstep directories so you can compare.

Posted: Fri Feb 17, 2006 1:40 pm
by Spooky
Hmmm, this is starting to get a little frustrating.

I've rebuilt my entire development kit onto another machine. Built all the libraries, built GNUstep from the startup package using default directories. I've not even attempted to slimdown the GNUstep dependancies and bugger me backwards I'm still getting the same error...
2006-02-17 13:22:28.567 oolite[352055] Did not find correct version of backend, falling back to std.
2006-02-17 13:22:28.568 oolite[352055] NSApplication.m:271 Assertion failed in initialize_gnustep_backend. Unable to find backend back... etc etc etc, yackety schmakety blah blah blah
Yet once again if I replace orignal installed GNUstep folder it miracleously springs into life. I've hacked a symbolic link from Oolite/oolite-deps/GNUstep to /usr/GNUstep and that works fine... maybe I'm missing an environment variable. All I know is there has to be some other reference somewhere that I'm missing. Here's my minorly modified export section from your install script.
export GNUSTEP_FLATTENED=yes
export GNUSTEP_HOST=mips-sgi-irix6.5
export GNUSTEP_HOST_CPU=mips
export GNUSTEP_HOST_OS=irix6.5
export GNUSTEP_HOST_VENDOR=sgi
export GNUSTEP_ROOT=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep
export GNUSTEP_PATHLIST=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep:$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep/Local:$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep/System
export GNUSTEP_USER_ROOT=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep
export GNUSTEP_SYSTEM_ROOT=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep/System
export GNUSTEP_NETWORK_ROOT=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep/Local
export GNUSTEP_LOCAL_ROOT=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/GNUstep/Local
export LD_LIBRARY_PATH=$OOLITE_ROOT/$TOPLEVEL/oolite-deps/lib

It's looking like this is going to elude me :(

Posted: Fri Feb 17, 2006 5:10 pm
by winston
It's probably not environment - it's probably a missing (and almost certainly empty) directory.