Porting Crossfire to IRIX -- help with error

A place for people to post strange occurances that could be potential bugs.

Moderator: Board moderators

Post Reply
squeen

Porting Crossfire to IRIX -- help with error

Post by squeen »

I have tried porting Crossfire to the Silicon Graphics operating system, IRIX v6.5.21.
I was able to successful compile and install the server (1.5.0) , gtk client (1.6.0) andmaps.

When I run "crossfire" to start the server all seems well although I do see the following
BUG: process_events(): Object without map or inventory is on active list: mobility (0)
clean_friendly_list: Removed 1 bogus links
CS: connection from client of type < GTK Unix Client 1.6.0>
but it still says waiting for connection.

I start up the client via "gcfclient", which comes up and asks for me to select a server. I choose localhost.

Next, I client core dumps and the server displays:
clean_friendly_list: Removed 1 bogus links
CS: connection from client of type < GTK Unix Client 1.6.0>
Get SetupCmd:: map1acmd 1 sound 1 sexp 1 darkness 1 newmapcmd 1 faceset 0 facecache 0 exp64 1 itemcmd 2
SendBack SetupCmd:: setup map1acmd 1 sound 1 sexp 1 darkness 1 newmapcmd 1 faceset 0 facecache 0 exp64 FALSE itemcmd
enter_map: supplied coordinates are not within the map! (/HallOfSelection: -1, -1)
LOGOUT: Player named dwarf from ip 127.0.0.1
Any idea what I'm doing wrong?
Avion
Senior member
Posts: 301
Joined: Tue Jun 03, 2003 1:16 am
Location: Canada
Contact:

Post by Avion »

enter_map: supplied coordinates are not within the map! (/HallOfSelection: -1, -1)
That looks like the problem - you cannot enter a map at -1 -1 and I can't see how this would happen either. I am assuming you have the maps installed under /share/crossfire/maps or whatever it would be in your setup?
Guest

Post by Guest »

Yes I downloaded crossfire-1.5.0.maps-big.tar.gz and extracted them into /usr/local/share/crossfire.

Any other ideas as to what might cause this. I am new to crossfire...is there an additional installation and executing step other than starting the sever and then the client?
Guest

Post by Guest »

I also am getting the following error in the client just before it crashes:
Unable to find match for faceset (null) on the server
Perhaps there is a missing component in my installation.

Thanks in advance for any help. :)
Avion
Senior member
Posts: 301
Joined: Tue Jun 03, 2003 1:16 am
Location: Canada
Contact:

Post by Avion »

my bad - you said the client crashed not the server didn't you. Can you get a debugger on the client to capture what happens when it crashes?
Guest

Post by Guest »

I've tried dbx and gdb - it just tells me that it recieved a signal to terminate. :(
User avatar
hoxu
Senior member
Posts: 330
Joined: Tue Apr 29, 2003 6:10 am

Post by hoxu »

Anonymous wrote:I've tried dbx and gdb - it just tells me that it recieved a signal to terminate. :(
What does it say _exactly_? Did you try "bt full"?

/* Debian GNU/Linux - rebooting is for adding hardware. */
squeen

Post by squeen »

I went back to the drawning board and discovered I was linking to an unstable version of libpng. I now have a working version of the crossfire server 1.5.0 and the crossfire client 1.6.0 on IRIX! :D

There were a couple of very minor changes to the Makefiles (missing link libs), and a code hack required to get gcc to compile the client:

Here is a diff of my hacked gtk/image.c and the original source:

Code: Select all

190,194c190,196
< 	    p = (uint32) (fog->pixels + i);
< 	    g = ( ((p >> 24) & 0xff)  + ((p >> 16) & 0xff) + ((p >> 8) & 0xff)) / 3;
< 	    p = (g << 24) | (g << 16) | (g << 8) | (p & 0xff);
< 	    l = (uint32*) fog->pixels + i;
< 	    *(uint32*) l = p;
---
> /*  ---- I made some "shot-in-the-dark" fixes here -squeen ---- */     
> 	    p = (uint32*) (fog->pixels + i);
> 	    g = ( ((*p >> 24) & 0xff)  + ((*p >> 16) & 0xff) + ((*p >> 8) & 0xff)) / 3;
> 	    *(uint32*) p = (g << 24) | (g << 16) | (g << 8) | (*p & 0xff);
> 	    l = (uint8*) fog->pixels + i;
> 	    *(uint8*) l = *p;
> /*  ----------------------------------------------------------- */  

This change seems to be in a section of code that uses SDL and only applies to Big Endian machines, so might have been overlooked in all of the Intel/Linux builds. Hope it help someone else.

I plan to post the IRIX binaries (in tardist format) shortly. I'll provide a link at that time.
Leaf
Forum Aficionado
Posts: 2002
Joined: Tue Apr 29, 2003 5:55 pm
Location: Minnesota, USA
Contact:

OT: Irix Client

Post by Leaf »

squeen wrote: I plan to post the IRIX binaries (in tardist format) shortly. I'll provide a link at that time.
Updating squeen's last followup...

Crossfire client is available on IRIX:
http://crossfire.real-time.com/clients/irix.html

Server, as well:
http://crossfire.real-time.com/download/index.html#irix

Additional information:
http://www.nekochan.net/weblog/archives/000194.html
Post Reply