#pentagram@irc.freenode.net logs for 20 Jun 2003 (GMT)

Archive Today Yesterday Tomorrow
Pentagram homepage

[01:22:37] --> Kirben has joined #pentagram
[01:22:37] --- ChanServ gives channel operator status to Kirben
[07:12:14] --> SB-X has joined #pentagram
[09:34:41] * SB-X is away: ...food...
[10:11:32] --> sbx has joined #pentagram
[10:11:49] * sbx is away: No reason given
[10:11:57] * sbx is away: No reason given
[10:12:07] * sbx is back (gone 00:00:01)
[10:12:13] <-- SB-X has left IRC (Killed (NickServ (Ghost: sbx!~sbx@
[10:12:15] --- sbx is now known as SB-X
[11:21:23] --> Colourless has joined #Pentagram
[11:21:24] --- ChanServ gives channel operator status to Colourless
[11:22:58] <-- SB-X has left IRC ("ZzZZzzz")
[11:23:49] <Colourless> hi
[12:15:20] <DarkeZzz> Gr33tz a11 u l33t d00dz!
[12:15:38] * DarkeZzz coughs and hides before Colourless kicks him.
[12:16:34] --- DarkeZzz is now known as Darke
[12:16:37] --- ChanServ gives channel operator status to Darke
[12:20:29] <Colourless> :-)_
[12:30:48] <Colourless> notes about palette fading and mushroom effect: The game has a series of 8 defined palettes which were just transformed copies of the normal palette. Palette 0 was the normal palette. Palettes 5,6 and 7 were the hue shifted palettes for the mushroom mode
[12:31:46] <Colourless> palette 3 was for the rainstorms
[12:33:17] <Colourless> palette 4 was for the first storms
[12:35:18] <Darke> Neat.
[12:35:43] <Colourless> ok, this is strange....
[12:35:59] <Colourless> Usecode function 376 (FENALIA)
[12:36:06] <Colourless> the function itself isn't strange
[12:36:14] <Colourless> now, what it implies... i find most amusing :-)
[12:36:39] <Colourless> pipes... plant buds... feeling hungry :-)
[12:36:53] <Darke> Eh?
[12:36:59] <Colourless> funky palettes :-)
[12:37:01] <Darke> Ahh!
[12:37:27] <Colourless> where are these items..
[12:38:23] <Colourless> removed from the GAME!
[12:38:27] <Colourless> no shapes!
[12:38:42] <Colourless> this now requires a hack or 2 :-)
[12:38:59] <Colourless> FENALIA needs to be added back into the game :-)
[12:39:02] <Darke> Heh.
[12:39:14] <Colourless> i wonder... does our friend the spanish version have it
[12:39:45] <Colourless> no
[12:43:44] * Darke wonders why they left that in there...
[12:44:06] * Darke guesses it's a 'feature' of a compiler that just grabs all the files in a directory and compiles them into a binary file. *grin*
[13:02:20] <Colourless> funny, there is more 'stuff'
[13:02:32] <Colourless> example potplant use
[13:02:58] <Colourless> has this in there
[13:03:01] <Colourless> 00FE: 0A push byte 00h
[13:03:01] <Colourless> 0100: 0B push 0178h
[13:03:01] <Colourless> 0103: 4B push addr [BP-02h]
[13:03:01] <Colourless> 0105: 0F calli 08h 0032 (Item::create(ushort,ushort))
[13:04:43] <Colourless> heh, doubleclicking on specific 'potplants' produces plant buds
[13:04:53] <Darke> Cool. *grin*
[13:05:24] <Colourless> double clicking on plant buds (which don't normally have a shape) is suppposed to mess with the palette
[13:08:05] <Colourless> hehe. avatar just said "I'm so hungry i could eat a live kith"
[13:08:20] <Colourless> now, i think there is a very good reason why this was 'removed' :-)
[13:09:15] * Darke giggles and guessed that just from the usecode there was a 'good' reason. *grin*
[13:16:36] <Colourless> ok, this 'must' have supposed to be an easter egg
[13:16:53] <Colourless> there are only 3 plants that will produce plant buds in the entire game
[13:16:58] <Colourless> all three are in darions house
[13:17:04] <Darke> Heh.
[13:17:34] <Colourless> and there was supposed to be a pipe somewhere on the east road map
[13:17:39] <Darke> Nice to know there's still stuff unknown about a game, what 8 or 9 years after it's release? *grin*
[13:27:02] --> artaxerxes has joined #pentagram
[13:27:08] <artaxerxes> hi all
[13:27:19] <Colourless> hi
[13:27:50] <artaxerxes> just wanted to tell you that I am going to try to port Pentagram to the zaurus (after a conversation with wjp and dominus yesterday)
[13:28:22] <artaxerxes> I've made a quick hack to add width and height settings to the config file since it is a pain to have to recompile to change the resolution
[13:28:43] <artaxerxes> (zaurus only runs at 320x240
[13:28:50] <artaxerxes> or less)
[13:29:38] <artaxerxes> config/video/width and config/video/height
[13:30:00] <artaxerxes> with default to 640x480
[13:35:24] <artaxerxes> are you interested in getting the patch?
[14:03:24] <-- Kirben has left IRC (Read error: 54 (Connection reset by peer))
[14:05:55] * Darke wonders why on earth, whenever he starts to code the compiler again, he finds himself touching lots of code not directly related to the compiler, yet none of the compiler-relevant code itself!
[14:18:55] * Darke blinks. There's a 'trap' shape? Cool. I presume this is normally invisible though. *grin*
[14:19:05] <Colourless> yes
[14:19:14] <Colourless> and it doesn't currently work for us
[14:19:25] <Darke> Hmm... how's it supposed to be triggered?
[14:19:33] <Colourless> no idea
[14:20:45] <Darke> I presume it's triggered when the bag/chest is open. I wonder if any events are supposed propogated into the contents. *shrug* Veird.
[14:21:30] <Colourless> Func_80 (Event 1) TRAP::use():
[14:22:19] <Darke> Yeah, I was just looking at that. The only problem is you can't pass a 'use' event to all items inside a container, for obvious reasons. *grin*
[14:23:02] <Colourless> the chest is suppsoed to trigger it
[14:23:12] <Darke> It doesn't activate by dclicking on it either. *pout*
[14:23:16] <Colourless> 010D: 74 loopscr 24 "$"
[14:23:17] <Colourless> 010F: 74 loopscr 3D "="
[14:23:17] <Colourless> 0111: 74 loopscr 40 "@"
[14:23:17] <Colourless> 0113: 0B push 02F4h
[14:23:17] <Colourless> 0116: 74 loopscr 25 "%"
[14:23:17] <Colourless> 0118: 3F push [BP-0Eh]
[14:23:19] <Colourless> 011A: 0B push FFFFh
[14:23:21] <Colourless> 011D: 70 loop [BP-0Ch] 06 04
[14:23:23] <Colourless> 0121: 51 jne 000Eh (to 0132)
[14:23:25] <Colourless> 0124: 4B push addr [BP-0Ch]
[14:23:27] <Colourless> 0126: 0F calli 04h 005D (process Item::use())
[14:24:05] <Darke> Sneaky. *grin*
[14:25:00] <Colourless> div might be the wrong way wround
[14:25:34] <Darke> Weird. I can dclick on the trap in the backpack and it activates, but if I dclick on the trap in the chest, it doesn't.
[14:26:05] <Colourless> or maybe div is right :-)
[14:26:59] * Darke gusses Colourless tried to reverse it and spectacularly bad things happened from the get go. *grin*
[14:32:51] <-- artaxerxes has left IRC (kornbluth.freenode.net irc.freenode.net)
[14:32:58] --> artaxerxes has joined #pentagram
[14:35:01] <-- artaxerxes has left IRC (kornbluth.freenode.net irc.freenode.net)
[14:37:38] --> artaxerxes has joined #pentagram
[14:43:21] <Colourless> we may be missing something you realize :-)
[14:43:46] <artaxerxes> hi Darke
[14:43:54] <Colourless> if a trap has a 'q' value, we might be supposed to call some other usecode function rather than the generic trap
[14:44:50] <Darke> Hiya!
[14:45:13] <artaxerxes> just to inform you the c++ code found in pentagram does not compile with cross-compile tools for ARM (zaurus). the compiler complains about some parameters that do not exist in arm-linux-c++ and also there is a pb with <virtual> stuff I believe
[14:45:24] <Darke> Colourless: That makes sense. Though it seems like a bit of a hack.
[14:45:32] <artaxerxes> -Wp, -MQ don't work for instance
[14:46:07] <Darke> Hmm... what version of gcc does it use? And what particular 'virtual' problems is it having?
[14:47:51] <artaxerxes> gcc version 2.95.2 19991024 (release
[14:48:02] <Darke> Umm... oh. That's why.
[14:48:35] <artaxerxes> darn... there is no update for cross-compiling for gcc 3.x
[14:48:54] <Darke> IIRC, pentagram pretty much won't compile at all with gcc's under 3.0, due to the fact they don't support templates and stuff properly. Not to mention they're rather buggy. *grin*
[14:49:57] <Darke> Weird. Last time I checked there was a Palm cross compiler patchset that worked perfectly with gcc3.3. It's slightly odd that a linux based device wouldn't be as up to date. *grin*
[14:53:21] <Colourless> it looks like we are supporting traps properly
[14:58:14] * Darke is puzzled then.
[15:00:47] <Colourless> looks like not all traps got triggered in the original either
[15:02:22] <Darke> That's just plain odd.
[15:02:55] <Colourless> basically if quality was greater that 0x100 then they didn't get triggered, it looks
[15:02:59] <Colourless> s/that/than/
[15:04:22] <Darke> I wonder why they'd do that?
[15:04:40] <Colourless> no idea
[15:05:26] <artaxerxes> maybe so that they are triggered by other events
[15:06:01] * Darke thinks tgwds and perks! Partially designed as variable difficulty level, that never got fully implemented?
[15:06:33] <Colourless> perhaps
[15:06:55] <Colourless> wouldn't make sense though in how it was implemented
[15:07:22] <Colourless> of course that compiled code that we see may not have been what was originally intended
[15:07:22] <Darke> artaxerxes: But they wouldn't have needed to use a 'trap' object then. They could have just triggered the usecode directly. Or placed/removed a trap shape in the item.
[15:07:54] <Colourless> hell, as far as we know, you might have supposed be able to avoid setting of traps due to your dexterity
[15:08:22] <Darke> That's what I'd theorise. It wouldn't be too difficult to remove/add code to fudge the rolls depending upon difficulty/dex.
[15:09:06] <Colourless> s/setting/tripping/
[16:30:57] --> wjp has joined #pentagram
[16:30:57] --- ChanServ gives channel operator status to wjp
[16:31:34] <wjp> h
[16:31:34] <wjp> i
[16:31:47] <Colourless> hi
[16:32:02] * Colourless is having fun with palette fading
[16:34:09] <artaxerxes> wjp: if you read the log you'll see it's gonna be a magistral pain to compile pentagram for zaurus. There is no gcc 3.0 cross-compiler !
[16:34:14] <wjp> Colourless: nice :-)
[16:34:25] <wjp> I just read it yes
[16:34:29] <wjp> that'll make it pretty much impossible
[16:34:45] <wjp> :-(
[16:34:53] <artaxerxes> adieu vaches. cochons, poulets
[16:35:15] <wjp> cows, ?, chickens?
[16:35:21] <artaxerxes> pigs
[16:35:38] <wjp> ooh, the other two were right? :-)
[16:35:42] * wjp is impressed with himself :-)
[16:35:43] <artaxerxes> yup!
[16:36:13] <artaxerxes> it's a french expression you say when you had great expectations starting from nothing and when it all get kaput
[16:37:45] * wjp is sad to say he's one fire :-)
[16:37:54] <wjp> (well, my DnD character is, anyway ;-) )
[16:38:05] <wjp> he's just been transformed into a living torch while raiding a fort :-)
[16:38:10] <artaxerxes> :-)
[16:38:23] <wjp> s/one/on
[16:38:40] <wjp> and we won't be able to play for at least two weeks since people are busy :-(
[16:38:48] <artaxerxes> (update: it's "adieu veaux, vaches, cochons, poulets". veaux = veals)
[16:39:00] * Darke uses a fire extinguisher on wjp.
[16:39:13] * wjp is in stasis right now, so that won't help much ;-)
[16:39:15] <wjp> but thanks :-)
[16:39:22] <Colourless> ok, is a living torch a good thing (i.e. give off light) or a bad thing (i.e. is on fire and is burning)
[16:39:24] <Darke> Ah well, such is life. *grin*
[16:39:25] <Colourless> ?
[16:39:30] <wjp> the latter :-)
[16:39:38] <wjp> I've been the former once while in a cave :-)
[16:39:52] <Colourless> you are ignus for planscape torment? ;-)
[16:39:56] <wjp> druid cast a light spell on my armour, to be exact :-)
[16:40:00] <Colourless> s/for/from/
[16:40:03] <wjp> nah, I just got some alchemists fire on me
[16:40:13] <Colourless> :-)
[16:40:34] <Colourless> BURRN!
[16:40:42] <wjp> interesting situation... it'll take a full round to extinguish it
[16:40:59] <wjp> but there are several people above me waiting to throw more :-)
[16:41:17] <Colourless> how much damage will you take?
[16:41:23] <wjp> not too much, probably
[16:41:31] <Colourless> what happens if you're throw fails?
[16:41:36] <wjp> 1D6 I think
[16:41:40] <Colourless> s/you're/your/
[16:41:48] <wjp> (I'm a level 4 fighter with 40/43 hp, currently)
[16:41:59] <Colourless> that should nothing then
[16:42:09] <wjp> I can take it for a few turns, yes
[16:42:17] <wjp> did I mention the archers? ;-)
[16:42:40] <Colourless> hmm, no i don't think you did
[16:43:07] <wjp> luckily the rest of the party will take some arrows too
[16:43:28] <wjp> and my AC against arrows is just a bit higher than my AC against thrown 'grenades'
[17:39:10] <wjp> dinner; bbl
[18:08:32] <wjp> back
[18:08:45] <Colourless> wb
[18:10:47] <artaxerxes> you guys remember the name of the unix command to see how time is spent in loop etc
[18:13:38] <wjp> time spent in loop? what do you mean?
[18:14:13] <wjp> maybe 'time' to measure how long a program runs, or 'gprof' for profiling?
[18:14:16] <artaxerxes> there is this unix command that tells you how many cycles are spent in blocks, how blocks there are etc
[18:14:22] <artaxerxes> profiling!
[18:14:25] <artaxerxes> that's the word!
[18:14:29] <artaxerxes> thx
[18:14:54] <wjp> you'll need to recompile your program to use it, btw
[18:15:05] <wjp> (pass the -pg switch to compile and link commands)
[18:24:20] <artaxerxes> did you guys know that you cannot have a function called _init or _fini in a dynamic library since it will break crt.o ? This pretty much kills the point of loading dynamic library, er, dynamically!
[18:24:40] <artaxerxes> cf: man dlopen
[18:24:42] <wjp> crt.o?
[18:24:48] <artaxerxes> std include
[18:24:58] <wjp> oh? :-)
[18:25:31] <artaxerxes> I want to make smooth use dynamic library so I can create plugins and not have to recompile it every time there is a new plugin
[18:25:45] <wjp> why link every plugin to crt.o?
[18:25:56] <wjp> what's it for, anyway?
[18:26:01] <artaxerxes> I wanted to test the loading of the lib worked, using the _init function as described in the main page, but it fails
[18:26:03] <Colourless> crt = c run time
[18:26:29] <artaxerxes> crt.o is automatically included when you compile a c program
[18:26:32] <wjp> a dynamic library shouldn't have that linked in, should it?
[18:26:49] <Colourless> well, yes it should if you want to use c library functions
[18:27:09] <wjp> wouldn't the program that loads the library already be linked against that?
[18:27:13] <Colourless> now, artaxerxes, why don't you just rename the functions?
[18:27:21] <wjp> If the library exports a routine named _init, then that code is exe-
[18:27:22] <wjp> cuted before dlopen returns. If the same library is loaded twice with
[18:27:35] <Colourless> wjp: yes, but the os 'wont' actually load it twice
[18:28:00] <artaxerxes> it should, according to the man page
[18:28:08] <wjp> you probably don't need _init if you control the loader yourself
[18:28:49] <artaxerxes> I wanted to have sth like that: void _init(){ printf("library loaded")};
[18:28:55] <wjp> just call a function "my_init" directly after loading
[18:29:11] <artaxerxes> just not as fun! :-)
[18:29:15] <wjp> (insert more imaginative name instead of my_init ;-) )
[18:29:24] <Colourless> but you do realize MORE PORTABLE
[18:29:36] <artaxerxes> I guess
[18:29:43] * wjp still doesn't see why crt.o would need to be linked into the dynamic library
[18:29:44] <artaxerxes> does windows have sth similar ?
[18:29:56] <Colourless> us windows folks have DLLMain
[18:30:27] <artaxerxes> careful. post flooding ahead:
[18:30:29] <artaxerxes> [aurelien@tor-web-997 mockup]$ gcc -shared -o libmyinit.so myinit.o
[18:30:29] <artaxerxes> myinit.o: In function `_init':
[18:30:29] <artaxerxes> myinit.o(.text+0x0): multiple definition of `_init'
[18:30:29] <artaxerxes> /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/../../../crti.o:/home/qateam/tmp/ccrLtcWk.s:28: first defined here
[18:30:32] <artaxerxes> myinit.o: In function `_fini':
[18:30:34] <artaxerxes> myinit.o(.text+0x18): multiple definition of `_fini'
[18:30:37] <artaxerxes> /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/../../../crti.o:/home/qateam/tmp/ccrLtcWk.s:28: first defined here
[18:30:40] <artaxerxes> collect2: ld returned 1 exit status
[18:30:51] <Colourless> wjp: because the library itself needs to know where the functions are supposed to be
[18:31:22] <wjp> that does make a certain kind of sense, yes
[18:31:30] * wjp sighs
[18:31:38] <wjp> I should really read up on linkers/loaders
[18:31:50] <artaxerxes> in windows, can you load a lib during runtime ?
[18:31:55] <wjp> of course
[18:32:02] <Colourless> dll = dynamic link library ;-)
[18:32:08] <artaxerxes> ah!
[18:32:09] <artaxerxes> :-)
[18:32:22] <artaxerxes> shows you how much I know about windows programming!
[18:32:38] <artaxerxes> so you have a dlopen equivalent?
[18:32:38] <Colourless> you use 3 functions. LoadLibrary, GetProcessAddress and FreeLibrary
[18:32:48] <artaxerxes> k
[18:33:19] <artaxerxes> you also have a _init type of function that gets automatically called when you load a dynamic lib?
[18:33:48] <Colourless> yes DLLMain
[18:33:59] <wjp> wasn't DLLMain some kind of dispatching function?
[18:34:26] <Colourless> it has multiple functions, but it's primary use is to init global data in your dll
[18:34:54] <artaxerxes> since it doesn't work on linux, I'll have to avoid having anything to initialise when loading a lib then
[18:35:18] <artaxerxes> kinda silly they say it's working (in the man page)
[18:35:33] <Colourless> generally you would manually call a Init function yourself
[18:35:39] <artaxerxes> ah
[18:35:46] <wjp> I would go with that, yes
[18:35:48] <artaxerxes> that I can do
[18:35:48] <wjp> more transparent
[18:36:12] <artaxerxes> forcing all plugins to have a plugin_init function of sth like that
[18:36:18] <wjp> yes
[18:36:33] <Colourless> you can also then pass args to it if you want
[18:36:46] <wjp> and get a return value
[18:36:49] <artaxerxes> now I have a kinda silly question. Can you load several lib that all have the "plugin_init" function ?
[18:36:55] <Colourless> yes
[18:36:59] <artaxerxes> no conflicts?
[18:37:10] <Colourless> you use function pointers
[18:37:15] <artaxerxes> how does it know which one to run?
[18:37:27] <wjp> use function pointers :-)
[18:37:47] <wjp> check the dlsym manpage
[18:37:48] <Colourless> generally for a plug in, you use a structure of function pointers
[18:37:51] <artaxerxes> got it
[18:38:10] <artaxerxes> Colourless: could you detail what you mean?
[18:38:41] <wjp> the init function fills a struct with function pointers to the function that perform the various task
[18:38:42] <wjp> s
[18:39:04] <artaxerxes> I see
[18:39:26] <Colourless> so you have something like
[18:39:28] <Colourless> int plugin_init(SomeStruct *functions)
[18:39:29] <Colourless> {
[18:39:41] <Colourless> functions->aFunction = aFunction_Implementation;
[18:39:46] <Colourless> return 0
[18:39:48] <Colourless> ;
[18:39:49] <Colourless> }
[18:39:54] <wjp> s/0/0;/
[18:39:59] <wjp> oh, nvm :-)
[18:40:40] <artaxerxes> I think if it works well, I'll have a wicked prog.
[18:40:52] <Colourless> you can also pass a set of functions exported from the host app in a another structure
[18:41:09] <wjp> photoshop uses huge structs
[18:41:14] <wjp> *shudder*
[18:41:17] <artaxerxes> so that the plugin has more tools available, right?
[18:41:31] <wjp> with pointers to more structs, which contain more functions, and...
[18:41:32] <wjp> yes
[18:41:42] <artaxerxes> sounds ugly! :-)
[18:42:17] <artaxerxes> in this case, btw, would you have one dll/so per plugin?
[18:42:42] <wjp> yes
[18:43:44] <artaxerxes> I can accept that. /usr/lib/libsmooth_smooth.so /usr/lib/libsmooth_randomize.so /usr/lib/libsmooth_streams.so etc
[18:44:12] <artaxerxes> and the config file holding stuff like:
[18:44:21] <artaxerxes> [smooth] blablabla
[18:44:28] <artaxerxes> [randomize] blablabla
[18:44:35] <artaxerxes> [streams] blablabla
[18:45:07] <artaxerxes> so that the prog reads "smooth" and load libsmooth_smooth.so in consequence
[18:45:08] <wjp> you might want to check __attribute__ ((constructor)) and __attribute__ ((destructor)) in gcc
[18:45:19] <wjp> that adds custom init/fini functions
[18:45:27] <artaxerxes> oh, but it's not in c++!
[18:45:38] <wjp> yes, I know.. why?
[18:45:41] <Colourless> ah yes, abusing C++ constructors ;-)
[18:46:00] <artaxerxes> isn't constructors and destructors used only in OOP ?
[18:46:05] <wjp> I don't think it has anything to do with C++
[18:46:24] <artaxerxes> man __attribute__ ?
[18:46:25] <Colourless> you can write entire programs within C++ constructors that exectute before main :-)
[18:46:37] <wjp> "Historically there have been two special functions, _init and _fini that can be used to control constructors and destructors. However, they are obsolete, and their use can lead to unpredicatable results. Your libraries should not use these; use the function attributes constructor and destructor above instead."
[18:46:55] <wjp> look for 'attribute' in the gcc info pages
[18:47:05] <Colourless> that has portability issues :-)
[18:48:02] <wjp> artaxerxes: your original gcc command missed a -c, I think
[18:48:08] <wjp> so it was trying to produce an executable
[18:48:36] <wjp> which was why it complained
[18:48:40] <artaxerxes> gcc -shared -o libmyinit.so myinit.o
[18:48:49] <wjp> yes, that needs a -c
[18:49:00] <artaxerxes> weird
[18:49:04] <wjp> why?
[18:49:29] <artaxerxes> -c is used to create an object.
[18:49:35] <wjp> yes, that's what you're doing
[18:49:41] <wjp> .so = shared object
[18:50:03] <artaxerxes> gcc: myinit.o: linker input file unused because linking not done
[18:50:26] <artaxerxes> from: gcc -shared -o libmyinit.so myinit.o -c
[18:50:33] <wjp> hm, wait
[18:50:42] <wjp> gcc -shared -c -o myinit.o myinit.c should be enough
[18:50:48] <wjp> no need to do anything after that
[18:51:07] <artaxerxes> but I need it to be libmyinit.so since I don't use -lmyinit
[18:51:30] <wjp> why? you get to specify the filename to dlopen
[18:51:49] <artaxerxes> yeah, but eventually it will be read from a config file
[18:52:04] <artaxerxes> so I don't have to know the name of the file
[18:53:47] <artaxerxes> in any case, even if I do that, when I compile and link test, I get this:
[18:53:50] <artaxerxes> gcc test.c -o test -ldl myinit.o
[18:53:57] <artaxerxes> myinit.o: In function `_init':
[18:53:57] <artaxerxes> myinit.o(.text+0x0): multiple definition of `_init'
[18:53:57] <artaxerxes> /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/../../../crti.o:/home/qateam/tmp/ccrLtcWk.s:28: first defined here
[18:54:00] <artaxerxes> myinit.o: In function `_fini':
[18:54:03] <artaxerxes> myinit.o(.text+0x18): multiple definition of `_fini'
[18:54:05] <artaxerxes> /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.2/../../../crti.o:/home/qateam/tmp/ccrLtcWk.s:28: first defined here
[18:54:15] <wjp> why are you linking against myinit.o here?
[18:54:31] <artaxerxes> to try what you are telling me! :-)
[18:54:56] <artaxerxes> btw, if I use dlopen, I must create a libmyinit
[18:55:29] <artaxerxes> I wouldn't have to use dlopen if I passed myinit.o at compile time
[18:56:01] <artaxerxes> anyways, sorry to bother you about something totally irrelevant to pentagram!
[19:01:23] <wjp> ok... I think I got _init to work, however unstable it's supposed to be
[19:01:50] <artaxerxes> then forget about it I will :-)
[19:02:41] <artaxerxes> with you experience with exult and pentagram, would you say it's better to always have an XML file as a config file?
[19:02:53] <wjp> always? probably not
[19:03:06] <artaxerxes> I was thinking of a config file similar to Samba's.
[19:03:27] <wjp> wasn't that a windows-.ini-style file?
[19:03:39] <artaxerxes> somethink like the following:
[19:03:48] <artaxerxes> [plugin_name]
[19:04:06] <artaxerxes> value [value]*
[19:05:33] <artaxerxes> let me make it better
[19:05:37] <artaxerxes> # this is a comment
[19:05:37] <artaxerxes> [randomize]
[19:05:37] <artaxerxes> FFFFFF 931029 1B3D5F 349C1D
[19:05:37] <artaxerxes> [stream]
[19:05:37] <artaxerxes> 000000 2340B3
[19:06:13] <artaxerxes> depending on the name of the plugin, it expects certain amount of parameters for each entry
[19:06:42] <wjp> ok... let's see... summing up my experiments:
[19:07:05] <wjp> if you want _init, and have a file myinit.c containing void _init() { /* whatever */ }
[19:07:11] <wjp> gcc -c -o myinit.o myinit.c
[19:07:15] <wjp> gcc -shared -nostdlib myinit.o -o myinit.so
[19:07:26] <wjp> and _init will get called when it's loaded
[19:07:30] <artaxerxes> nice
[19:07:35] <wjp> if you want to use __attribute__ ((constructor))
[19:07:39] <artaxerxes> I'll give it try right now
[19:07:55] <wjp> myinit.c should contain: void __attribute__ ((constructor)) doesnt_matter() { /* whatever */ }
[19:08:00] <wjp> gcc -c -o myinit.o myinit.c
[19:08:05] <wjp> gcc -shared myinit.o -o myinit.so
[19:08:20] <wjp> and doesnt_matter() will be called on dlopen
[19:08:35] <wjp> I would go with the latter :-)
[19:10:13] <artaxerxes> it's working great!
[19:10:18] <artaxerxes> thx a lot!
[19:10:41] <wjp> np
[19:10:56] <artaxerxes> fun!
[19:11:22] <artaxerxes> If I call my function found on myinit (up) once I unloaded the lib, it seg faults!
[19:11:30] <artaxerxes> ;-)
[19:11:47] <wjp> um, that's pretty much expected, yes :-)
[19:12:23] <artaxerxes> well, I have food for though and coding for the next couple weeks. I'll keep you posted on the progress.
[19:13:29] <artaxerxes> with this system, I could even have a statistic module that keeps track of all colours seens, etc
[19:13:49] <artaxerxes> one that inverts land <-> sea
[19:14:19] <artaxerxes> I could even have one that generates a random map!
[19:15:00] <Colourless> committed some stuff (palette fading mostly). And it brings up an annoying problem. It very much appears that usecode processes that call NPC::teleport() should not be terminated
[19:15:12] <artaxerxes> (PR language) the possibilities are endless!
[19:16:27] <Colourless> cause when leaving the catacombs or entering demons crag, the usecode egg does a fade out to black the map changes, you have stasis set, and eveything remains black
[19:16:43] <Colourless> s/black the/black, the/
[19:18:45] <wjp> hm
[19:19:09] <wjp> any idea what the process set its info to?
[19:19:17] <wjp> (the one that shouldn't be killed)
[19:19:35] <Colourless> no idea
[19:20:13] <Colourless> Usecode function 1217 (CATAPORT)
[19:20:16] <Colourless> Func_80 (Event 7) CATAPORT::hatch():
[19:21:48] <wjp> hm, that only teleports within the current map, doesn't it?
[19:21:55] <Colourless> yes
[19:22:00] <Colourless> that's not the right one
[19:22:34] <Colourless> bah, i'll just check it's q
[19:23:14] <Colourless> q is 65
[19:23:46] <Colourless> hmm, which is CATAPORT
[19:23:50] <wjp> 1216, GRAVEGG
[19:23:59] <wjp> it is?
[19:24:01] <Colourless> oh yes :-)
[19:24:11] <wjp> 0x47F+q :-)
[19:24:20] <Colourless> yeah
[19:24:33] <Colourless> i was thinking 480
[19:24:45] <wjp> bingo
[19:24:46] <wjp> 008B: 0A push byte 01h
[19:24:46] <wjp> 008D: 0A push byte 00h
[19:24:46] <wjp> 008F: 77 set info
[19:25:08] <Colourless> ah ha
[19:25:29] <wjp> problem solved :-)
[19:25:33] <Colourless> i'm guessing this then isn't wanted
[19:25:36] <Colourless> // kill ALL processes:
[19:25:36] <Colourless> Kernel::get_instance()->killProcesses(0,6); // !constant
[19:25:41] <Colourless> in World.cpp :-)
[19:25:44] <wjp> probably not, no :-)
[19:26:22] <wjp> we either kill all processes while their items are being killed, or we kill everything but the avatar's processes?
[19:26:39] <wjp> no, wait, wrong argument order
[19:26:46] <wjp> everything but processes with item_num 0 and/or type 1
[19:27:21] <wjp> we'll need to make sure all non-usecode Processes have a proper item_num and type set
[19:27:33] <Colourless> void Object::clearObjId()
[19:27:46] <Colourless> {
[19:27:49] <Colourless> // On clearObjId we terminate all processes that belonged to us
[19:27:49] <Colourless> Kernel::get_instance()->killProcesses(objid, 6);
[19:27:56] * wjp nods
[19:28:02] <Colourless> thing is, on map change, clearObjId isn't called
[19:28:15] <wjp> but does that leave any processes that should be killed?
[19:28:15] <wjp> it isn't?
[19:28:52] <Colourless> no idea
[19:28:57] <Colourless> nbo it's not
[19:29:09] <wjp> yes it is
[19:29:22] <Colourless> where?
[19:29:30] <wjp> CurrentMap::writeback
[19:29:35] <Colourless> ah ok
[19:29:51] <wjp> (if we didn't clear them we'd be out of objIDs after about 3 map changes)
[19:29:56] <Colourless> cool
[19:30:23] <Colourless> removing that Kernel::get_instance()->killProcesses(0,6); makes the map change works
[19:30:38] <Colourless> new problem : eggs not being reset
[19:30:38] <wjp> this won't kill processes belonging to NPC's, or NPC's inventories
[19:31:24] <Colourless> hmm, that's not too good
[19:31:47] <wjp> hatched is never set to false
[19:31:55] <wjp> (which is why it might be better to kill everything but (0,1) processes)
[19:32:49] <Colourless> i agree
[19:34:34] <Colourless> looking at the usecode, some eggs destroy themselves
[19:35:29] <wjp> that would immediately shoot the process
[19:35:37] <wjp> (well, at the next suspend)
[19:36:30] <wjp> not sure what would happen between the destroy and the suspend
[19:36:50] <Colourless> well, you'd hope nothing muc
[19:36:53] <Colourless> h
[19:37:12] <wjp> no, should be ok
[19:38:19] <Colourless> hmm, monster eggs seem to auto reset themselves or something
[19:38:28] <wjp> yes
[19:38:44] <wjp> you showed that to me a few weeks ago :-)
[19:39:04] <wjp> MONEGG::leaveFastArea
[19:39:10] <Colourless> yes
[19:39:27] <wjp> I'm not too sure about that hatched flag
[19:39:37] <wjp> it should probably be a bit in q/mapnum/npcnum/whatever
[19:40:25] <Colourless> i don't even know if they had one
[19:40:56] <wjp> would they hatch everytime you got close?
[19:41:03] <wjp> possible, I guess
[19:42:41] <Colourless> then again
[19:45:20] <Colourless> i don't really know
[19:46:53] <wjp> easy way to check might be the lurker eggs around the coast at the start
[19:48:00] <Colourless> removing the hatched check makes pentagram crash on GRAVEGG
[19:48:20] <wjp> it probably hatches it multiple times
[19:48:42] <wjp> hm... currently I might hatch an egg every frame while you're in range
[19:49:19] <wjp> (since I was assuming the hatched flag would prevent that)
[19:53:25] <Colourless> reset on map change it looks to me
[19:53:46] <Colourless> the lurker egg would only hatch once, until i left the map and came back
[19:54:56] <Colourless> if the monster eggs are any indication
[19:55:24] <Colourless> 'hatched' is set in eggid
[19:56:04] <wjp> i.e., mapnum :-)
[19:56:32] <wjp> bit 0x80, it seems
[19:59:18] <Colourless> no, that's only for monsters
[19:59:47] <Colourless> other eggs use eggid for other stuff
[20:15:50] --> Dominus has joined #pentagram
[20:16:36] <wjp> hi
[20:16:45] <Colourless> hi
[20:17:15] <Dominus> hi
[20:18:40] <Colourless> i am going now
[20:18:42] <Colourless> cya
[20:18:45] <artaxerxes> bye
[20:18:48] <artaxerxes> hi Dominus
[20:18:48] <wjp> night
[20:18:58] <Dominus> bye
[20:19:00] <Colourless> but first i'll commit the egg stuff
[20:19:03] <-- Colourless has left IRC ("casts invisibility")
[20:19:14] <wjp> good :-)
[21:25:03] <artaxerxes> gotta go!
[21:25:07] <artaxerxes> bye
[21:25:10] <-- artaxerxes has left #pentagram ()
[21:49:02] <Dominus> hmm
[21:49:20] <Dominus> hasn't been that empty here in a long time
[21:49:36] <Dominus> only actual dev-team members
[21:49:57] <exultbot> don't forget about me! ;-)
[21:50:26] <Dominus> ah, you are an honorable member of several teams
[21:50:40] <wjp> honorary?
[21:50:52] <Dominus> aehm, yes
[21:50:54] <wjp> although I'm sure exultbot's is quite honorable too :-)
[21:51:17] <Dominus> :-)
[21:51:31] <Dominus> listening and recording other people'S conversations...
[21:51:46] * wjp is just looking over the weblogs for the logs
[21:51:50] <wjp> interesting google queries
[21:51:54] <wjp> "USB mouse driver"? "abcd.exe game download"?
[21:52:07] <wjp> "USB mouse driver for DOS", even :-)
[21:52:35] <wjp> "nwn tactic", "neverwinter nights savegame download"
[21:52:51] <wjp> "ctcp xchat avatar" :-)
[21:53:33] <Dominus> what are you googling for exactly?
[21:53:50] <wjp> I'm not googling
[21:54:17] <wjp> those showed up in hits to the pentagram logs
[21:54:40] <Dominus> ah
[21:55:19] * Dominus has to tidy up his "workroom" atm
[21:55:32] <Dominus> I'm going home on sunday for a couple of days
[21:55:50] * wjp looks around
[21:55:54] <wjp> I need to do that sometime soon too :-)
[21:55:58] <wjp> (tidying up, that is)
[21:56:19] <Dominus> There will be one of the last landings of an Air France's Concorde
[21:56:50] <Dominus> at Baden Baden (small semi-famous city in Germany)
[21:57:25] <wjp> the name definitely sounds familiar, although I wouldn't be able to say where it is or what it's famous for :-)
[21:57:28] <Dominus> and I'm affiliated with the Museum that will get that Concorde and will be on the team that films it
[21:57:47] <Dominus> it's a "Kurort"
[21:57:56] <wjp> ah
[21:57:59] <Dominus> supposedly healthy city
[21:58:01] <wjp> pretty cool :-)
[21:58:11] <Dominus> and has a casino
[21:58:28] <Dominus> yeah, looking forward to it
[21:58:37] <Dominus> will be on tuesday
[21:59:16] <Dominus> http://www.museum-sinsheim.de
[21:59:52] <wjp> where is Baden Baden roughly?
[22:00:13] <Dominus> south-west of germany
[22:00:28] <wjp> (speaking of empty, btw, you should see #uwadv :-( )
[22:00:34] <wjp> so relatively close to Austria?
[22:01:01] <Dominus> my uncle found out that he flew with the concorde that had that terrible crash the other day
[22:01:14] <Dominus> relative=700 km
[22:01:38] <Dominus> Austria is to the southeast of Germany and Vienna is in the far east of Austria
[22:01:49] <Dominus> the other day= the other year
[22:01:52] <Dominus> oops :-)
[22:01:53] <wjp> yikes, how long before the crash?
[22:02:12] <Dominus> don't know
[22:02:16] <wjp> I read that as "he figured it out the other day"
[22:02:40] <Dominus> he he
[22:03:13] <Dominus> the airstrip in Baden-Baden is jst big enough to allow a concorde to land
[22:04:34] <Dominus> I could have had the oppurtunity to take that flight from France to Baden-Baden (theoratically at least)
[22:04:47] <Dominus> but that is something I'll rather not do
[22:05:08] <wjp> its track record recently isn't all that great, no :-)
[22:05:26] <Dominus> exactly
[22:05:56] <Dominus> Air France is not doing any flights anymore and British Airways will terminate its service to the end of the year
[22:11:15] * wjp is finally starting with item dragging
[22:11:21] <wjp> I've been delaying it for weeks now... :-)
[22:12:22] <Dominus> hooray!!!!
[22:12:33] <Dominus> item dragging will feel like a big step
[22:15:11] <wjp> yes :-)
[22:15:20] <wjp> a very useful one too :-)
[22:15:45] <Dominus> yes
[22:15:56] <Dominus> and give that avatar a backpack...
[22:16:00] <Dominus> :-)
[22:16:13] <wjp> once dragging is in place that would be useful, yes :-)
[22:16:20] <wjp> although a backpack requires adding inventories first
[22:16:21] <Dominus> exactly
[22:16:32] <Dominus> ok, first dragging
[22:16:36] <Dominus> then inventories
[22:16:39] <wjp> and figuring out how equipment slots are handled
[22:16:43] <Dominus> and then movement
[22:17:06] <wjp> movement... *shudder*
[22:17:06] <wjp> that's going to be a nightmare
[22:17:11] <Dominus> aehm, or whatever you WANT to do
[22:17:34] <wjp> maybe I'll get Colourless to do moving ;-)
[22:17:41] <wjp> (he did do the current movement code, after all :-) )
[22:18:12] <wjp> ah well, I might start working on it a bit this weekend
[22:18:18] <wjp> getting basic walking in place should be doable
[22:18:33] <wjp> running, too
[22:18:36] <wjp> then pre-patch jumping :-)
[22:18:44] <Dominus> noooooooooooooooooooooooo
[22:18:56] <Dominus> he he
[22:19:13] <Dominus> let's release Pentagram 1.0 in about two years
[22:19:13] <wjp> post-patch jumping is a huge hack
[22:19:35] <Dominus> and half a year later have the post patch jumping in
[22:19:36] <wjp> uh?
[22:19:41] <wjp> ah :-)
[22:20:16] <Dominus> I see. hmm, before adding more hacks better have it working correctly then
[22:20:47] <Dominus> maybe make it configurable, so people can relive their experiences with the original
[22:21:09] <wjp> pre-patch/post-patch jumping will definately be an option
[22:57:23] <Dominus> another thing that annoys me endlessly about my lost data: my email filter is gone and I need to redo it...
[23:13:05] <wjp> :-(
[23:24:22] <wjp> time to go
[23:24:23] <wjp> night
[23:24:28] <Dominus> bye
[23:24:28] <-- wjp has left IRC ("Zzzz...")
[23:24:43] <Dominus> I should go too
[23:24:55] <-- Dominus has left IRC ("enough for now")