#exult@irc.freenode.net logs for 3 Apr 2002 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage


[01:03:58] --> Darke has joined #exult
[01:03:58] --- ChanServ gives channel operator status to Darke
[01:04:03] * Darke bows. Hi.
[01:20:33] <-- royalsexy has left IRC (Read error: 110 (Connection timed out))
[01:27:10] --> royalsexy has joined #exult
[02:32:56] <-- royalsexy has left IRC (sterling.openprojects.net irc.openprojects.net)
[02:33:25] <-- cnj has left IRC (sterling.openprojects.net irc.openprojects.net)
[02:38:14] <-- Darke has left IRC (sterling.openprojects.net irc.openprojects.net)
[02:46:24] --> Darke has joined #exult
[02:46:24] --> royalsexy has joined #exult
[02:51:21] --> cnj has joined #exult
[02:57:16] <-- Darke has left IRC (sterling.openprojects.net irc.openprojects.net)
[02:57:25] --> Darke has joined #exult
[06:32:39] --> EazyCheez has joined #exult
[07:02:00] <-- EazyCheez has left IRC ("oWiRC version 0.74")
[07:35:25] --> Kirben has joined #exult
[07:35:25] --- ChanServ gives channel operator status to Kirben
[07:40:14] <Darke> Hi.
[07:43:48] <royalsexy> 'sup
[07:44:00] <royalsexy> oops i'm meant to be idling aren't i? :P
[07:44:10] <Darke> You are?!?
[07:50:35] <royalsexy> heheh
[07:50:38] <royalsexy> i was
[07:50:45] <royalsexy> :)
[08:22:39] --> sb-x has joined #exult
[08:22:56] <sb-x> ?date
[08:22:56] <exultbot> It is now Wed Apr 3 08:22:56 2002 (GMT).
[08:23:20] <sb-x> hi
[08:24:04] <Darke> Hi.
[08:38:57] <-- royalsexy has left IRC (Read error: 110 (Connection timed out))
[08:51:16] --> royalsexy has joined #exult
[08:51:24] <sb-x> :O
[08:51:31] <royalsexy> hrm
[08:51:40] <royalsexy> what the heck just happened there?
[08:51:52] <sb-x> <-- royalsexy has quit (Read error: 110 (Connection timed out))
[08:51:56] <royalsexy> apparently /part doesn't do what i think it does :)
[08:52:00] <royalsexy> heh
[08:52:02] <-- sb-x has left #exult ()
[08:52:04] --> sb-x has joined #exult
[08:52:05] <royalsexy> ta sb-x
[08:52:12] <sb-x> np royalsexy
[08:52:13] <royalsexy> i'm just going mental then
[08:52:25] <-- royalsexy has left #exult ()
[08:56:48] <sb-x> !
[08:56:49] <-- sb-x has left IRC ("X-Chat [1.6.4]")
[09:12:06] <Kirben> darn cvs emails aren't working again.
[09:31:59] * Darke hasn't noticed, since he doesn't get them.
[09:36:02] --> wjp has joined #exult
[09:36:02] --- ChanServ gives channel operator status to wjp
[09:36:05] <wjp> hi
[09:37:33] <Darke> Hi.
[09:39:09] <Darke> A bizzare and perhaps silly question, since the answer is probably obvious. I don't suppose there's any documentaion, other then disasm.cc, on the format of the u8 usecode file? <grin>
[09:40:10] * Darke is about half way through trying to work out exactly how disasm.cc works, so he can prod ucxt to DTRT, and figures that docs might help. <grin>
[10:03:17] <wjp> well, actually there is, but it's on my HD
[10:07:05] <wjp> committed
[10:07:16] * Darke ooohs? Thanks!
[10:08:10] <wjp> it doesn't contain any opcodes, just the file format
[10:08:26] <Darke> Yep. That's just what I wanted. <grin> Thanks.
[10:10:01] <Darke> I take it there's no documentation on the flex file format either? I couldn't locate any in either exult or pentagram. It shouldn't be too much of a problem since I should just be able to use the Flex class in files/.
[10:11:08] <wjp> flex format is pretty easy
[10:11:32] <wjp> u8gfxfmt.txt describes it, btw
[10:11:46] <wjp> (the "header chunk" and "type information chunk" parts make up the flex format)
[10:12:35] <Darke> <nod> I seem to remember fiddling with some old games who also used flex formats to store stuff, I don't remember it being 'hard', I just don't remember anything more about it then the name. <grin>
[10:18:06] * Darke wonders why there's 0x54, '1A's at the start of the file. 'Because', I suppose.
[10:18:36] <wjp> that's probably why, yes :-)
[10:20:05] * Darke considers being 'ultra pedanic' and actually reading all those bytes and verifying that they are all 0x1a... But he thinks that's probably using the 'piledriver to crack an egg' appropach.
[10:25:52] <wjp> piledriver? dunno what it is, but it sounds big :-)
[10:28:57] <Darke> It's what they slam building footings into the ground with where you don't have access to bedrock. Think two tall poles with a large multi-ton chunk of steel between them, and the pole you want bashed into the ground vertically supported underneath it. The lump of steel ratchets to the top, then drops and gravity does the rest, until it hits one end of the pole. The noise is... impressive. <grin>
[10:29:10] <wjp> ah, those...
[10:29:37] * wjp wonders what they're called in Dutch
[11:32:47] --> Fingolfin has joined #exult
[11:34:49] <Fingolfin> hi
[11:34:54] --- ChanServ gives channel operator status to Fingolfin
[11:35:08] <Darke> Hi.
[11:44:10] * Darke considers that at least the large block of '1A's at the start of the the eusecode.flx gives us a place to drop special markers in, if we ever decided to patch, or extend the usecode format.
[11:45:51] <Darke> Or for that matter, any flex format.
[12:08:25] --> Colourless has joined #Exult
[12:08:25] --- ChanServ gives channel operator status to Colourless
[12:08:35] <Colourless> hi
[12:09:44] <Darke> Hi.
[12:13:00] <Fingolfin> yo
[13:39:56] * Darke wonders if anyone has used GNU `readline` before. Or more specifically, if anyone has had problems getting it to link correctly. <grin>
[13:42:54] <Darke> Don't worry, I was just missing a -lcurses in the makefile. <sigh>
[13:50:10] <-- Darke has left IRC (sterling.openprojects.net irc.openprojects.net)
[13:50:29] --> Darke has joined #exult
[14:00:19] <-- Darke has left IRC (sterling.openprojects.net irc.openprojects.net)
[14:00:34] --> Darke has joined #exult
[15:26:09] * Darke tries to work out the 'nicest' way of acquiring all the u8 function details without doing the seekg shuffle.
[15:27:55] <Darke> Hmm... are std::string's copy on write? I can't seem to remember at the moment.
[15:28:07] <wjp> they should be, IIRC
[15:29:09] <Fingolfin> that's left to the implementation
[15:29:22] <Fingolfin> but all I have seen indeed use refcounting
[15:29:31] <Fingolfin> i.e. copying them is cheap, and so are substr etc.
[15:29:48] <Darke> If it is, acquiring a list of names, and stuffing them into a temporary vector, then acquiring the offset/length and dropping all three of them into a map<> 'should' be the most efficient way. I think.
[15:30:24] <Fingolfin> use a vector only if oyu have an est. of the total number in advance, otherwise a lsit =)
[15:30:26] <Fingolfin> list even
[15:30:37] <Fingolfin> ah wait,
[15:30:43] * Fingolfin reads what was said previously
[15:31:16] <Darke> FYI, Yes I do know exactly how many of them there should be.
[15:31:24] <Fingolfin> hm... in any case... how often would you do that? i.e. isn't that done only once and then you keep the resultty?
[15:31:29] <Fingolfin> yeah, I figured =)
[15:33:24] <Darke> It 'should' be done only once. At the moment, I'm trying to write a usecode 'caching' class for the u8 usecode. So I don't end up using 20Meg of memory as 'temporary' storage of it in ucxt, like I do with U7. I'm also trying to overengineer it a bit, so that it would be possible to use it in, say, a u8 game engine...
[15:33:38] <wjp> :-)
[15:34:13] <Darke> The theory being that you can also dynamially 'reload' all the usecode in game, just in case you're debugging something... <grin>
[15:35:35] <Darke> Currently, I'm just trying to get it to load up all the headers and usecode functions on demand, though a little commandline 'client' I am writing, that's what was with the `readline` questions earlier.
[15:37:21] * Darke does realise `readline` probably isn't available on some OSes, but it can 'easily' be replaced by a `getline`. Of course this doesn't provide any sort of editing features, nor command history. But it's only for testing, and I'm doing the testing under linux, so it shouldn't matter, I hope. <grin>
[15:40:25] <Colourless> some of us have operating systems that automatically have command history when getting input from stdin.... regardless of method
[15:40:55] <wjp> I hope you can turn that off?
[15:41:07] <Colourless> eh, no idea... no reason to
[15:43:03] <wjp> lol: http://www.satirewire.com/briefs/belgium.shtml
[15:47:21] <Darke> wjp: <blinkyblink>
[15:47:43] * wjp wonders if they'll drop any stray cats over holland :-)
[15:49:24] * Darke has _no_clue_, and thinks he's rather remain at that level of cluelessness relating to cats and holland. And preferably for the entire US too.
[15:49:48] <wjp> :-)
[15:53:29] * Darke wonders why there appears to be 13 bytes allocated for the function names, whilst only 9 bytes are used. Is this another case of 'Because'?
[15:55:28] <Colourless> because 13 is better than 9!
[15:56:32] <Darke> They figured having 12 characters (plus null) in a stored function name was unlucky, so they dropped it down to a more 'logical' 8+null?
[15:57:41] * Darke must be tired, that's actually begining to make sense. <grin>
[15:57:44] <Colourless> 12 chars = 8.3 filename plus dot
[15:58:25] <Colourless> of course i've no idea what you are doing
[15:58:39] * Darke ahhs. Makes _much_ more sense.
[15:58:57] <-- Kirben has left IRC ("System Meltdown")
[15:59:32] <Darke> Reinventing the wheel and adding flanges and 'go faster' stripes I think.
[16:01:45] * Darke is just trying to write a 'load u8 usecode' function, that neither thrashes the disk, nor takes up massive amounts of memory. That question was just idle curiosity.
[16:13:46] <Darke> Scratch that. They are 9 characters long. There's just a 4 byte 'number' before them.
[16:28:45] <wjp> hm?
[16:28:46] * wjp scrolls up
[16:29:17] <wjp> yeah, they're 9 bytes long
[16:29:34] <wjp> (see disasm.cc around line 630)
[16:31:35] <Darke> These numbers are wierd. Some are 1/2/3/64/65 others are way up in the 98304/98369/229379. Maybe it's some kind of bitfield?
[16:31:56] <Darke> (All decimal btw)
[16:32:03] <wjp> probably, yes
[16:32:16] <Colourless> i agree
[16:32:30] <Colourless> usually easier to recognise in hex
[16:32:43] <wjp> there's at least several types of functions, as far as we know
[16:34:03] * Darke just noticed he was actually 'cout'ing them rather then using his tracing functions with DTRT. <grin>
[16:39:49] <Darke> Incidentally, my quick modifications to disasm.cc to show the numbers are:
[16:39:51] <Darke> ucfile.seekg(nameoffset + (13 * func));
[16:39:51] <Darke> unsigned int anum = read4(ucfile);
[16:40:01] <Darke> cout << "Usecode function " << setw(4) << func << " (0x" << std::hex << setw(4) << func << std::dec << ") (" << setw(8) << namebuf << ":" << std::hex << std::setw(8) << anum << std::dec << ")" << endl;
[16:40:21] <Colourless> hmm, you know, printf really is easier :-)
[16:40:35] <Darke> In the appropriate place in the `// List functions` area. <grin> Sorry I can't be more specific, but my copy has been a bit hacked.
[16:41:06] <Darke> Colourless: Sometimes. <grin> I normally have std::hex on by default among other things.
[16:41:21] <Colourless> lets see
[16:42:31] <Darke> The 'read4' line goes straight after the 'seekg' one, by the way.
[16:43:33] <Colourless> printf ("Usecode functions %04d (0x%04X) (%8s:%08d)\n", func, func, namebuf, anum);
[16:44:05] <Colourless> i 'think' that should be it
[16:44:15] <Darke> I don't suppose anyone knows a 'quick' way of stopping one particular file being compiled under anything but linux with the pentagram make system?
[16:44:31] <Colourless> #ifdef around everything in the file
[16:44:35] <Darke> Yeah. That looks right.
[16:47:45] <Darke> Colourless: Thanks. Umm... there doesn't appear to be a specific linux one in config.h, so is it something like `#if !defined(OPENBSD) && !defined(MACOSX) && !defined(CYGWIN)`?
[16:48:20] <wjp> #ifdef __LINUX__ ?
[16:48:47] <Darke> Thanks. I shall try that.
[16:48:48] <wjp> no, wait
[16:48:52] <wjp> __linux__
[16:48:57] <wjp> or __linux
[16:49:18] <wjp> try this, btw: g++ -E -dM - < /dev/null
[16:50:43] <Darke> Oooh, lots of #defines!
[16:51:26] <Darke> Hmm... I'll have to provide a stub main() too.
[16:54:31] <Darke> Nice! It should just produce an executable that just says it doesn't work, if it's not under linux. <grin> Thanks.
[16:54:50] <wjp> hehe :-)
[16:55:15] * Darke will commit later in the day, _after_ he's gotten a little bit of sleep, and had a chance to clean the code up a bit. <grin> "Night!"
[16:55:23] <Colourless> night
[16:55:23] <wjp> night
[16:55:27] <-- Darke has left #exult ()
[17:10:29] * wjp has to go
[17:10:29] <wjp> bye
[17:10:32] <-- wjp has left IRC ("[x]chat")
[18:04:46] --> Dark-Star has joined #exult
[18:04:50] <Dark-Star> Hi
[18:04:55] <Colourless> hi
[18:05:13] <Dark-Star> Anyone know how I can convert an std::string to uppercase?
[18:05:30] <Fingolfin> with a function!
[18:05:33] <Fingolfin> :-)
[18:05:48] <Dark-Star> so there's no built-in function?? :-((
[18:06:02] <Dark-Star> That's why I *do* like the .NET framework *eg*
[18:06:11] * Dark-Star ducks and runs away
[18:06:33] <Fingolfin> well
[18:06:45] <Fingolfin> "uppercase" is a locale specific definition....
[18:08:43] <Fingolfin> but this should work:
[18:08:58] <Fingolfin> transform(s.begin(), s.end(), s.begin(), tolower);
[18:09:00] <Fingolfin> if s is your string
[18:09:08] <Fingolfin> err, toupper in your case
[18:10:05] <Dark-Star> ok let me try it...
[18:11:15] <Dark-Star> so is this a member function of std::string? and does it mutate the sting or only return a new (upper case) string?
[18:11:25] <Dark-Star> s/string/string
[18:11:30] <Dark-Star> s/sting/string
[18:11:32] <Dark-Star> :-(
[18:15:00] <Fingolfin> just use exactly what I typed in. No it's not a member function, it's a global function
[18:15:36] <Fingolfin> in algo.h, I think
[18:16:16] <Dark-Star> ok that's what I just found out too....
[18:18:53] <Dark-Star> great! it works! thanks!!
[18:19:21] * Dark-Star just finished his patch to the pentagram usecode disassembler :)
[18:28:27] <Dark-Star> how do I do a correct diff for a patch? "diff -u dir1 dir2"?
[18:29:51] <Fingolfin> if you want to diff dirs, use "-ru"
[18:30:00] <Fingolfin> if there are new files in the second dir, use -ruN
[18:30:26] <Dark-Star> ok thanks
[18:45:49] <Dark-Star> ok I'll be away again for an hour or so... see ya
[18:46:05] <-- Dark-Star has left IRC ("shutdown")
[20:37:09] --> wjp has joined #exult
[20:37:10] --- ChanServ gives channel operator status to wjp
[20:37:16] <wjp> hi again
[20:37:21] <Colourless> hi
[20:38:02] <Fingolfin> yo
[20:41:06] <wjp> how strange.. someone wants to know what the size of the "tangent surface" of a sphere and a tangent plane is
[20:41:20] * wjp could've sworn those things only intersected in a single point :-)
[20:41:34] <Colourless> answer is simple then :-)
[20:41:38] * Fingolfin , too
[20:41:43] <Fingolfin> hehe, 0
[20:41:49] <wjp> Fingolfin is simple too? ;-)
[20:41:55] <Colourless> hehe
[20:42:00] <Fingolfin> yes, me simple
[20:42:20] <Fingolfin> me not complicated phrase structure
[21:13:05] <Colourless> time for me to go
[21:13:10] <wjp> k, night
[21:13:13] <Colourless> cya
[21:13:17] <-- Colourless has left IRC ("no comment")
[21:21:20] --> Dark-Star has joined #exult
[21:21:21] <Dark-Star> Hi
[21:21:25] <wjp> hi
[21:21:32] * wjp just noticed another something about the function names
[21:21:39] <Dark-Star> yes?
[21:21:57] <wjp> opcodes 57/58 also call functions
[21:22:09] <wjp> (hex)
[21:22:37] <Dark-Star> oh, yes.... I think I just forgot these ;-)
[21:24:06] <wjp> oh, and I think a mixture of the last path-component and a command-line option would be best for language detection
[21:24:33] <wjp> (something like --lang english, --lang french of --lang german)
[21:24:53] <wjp> s/of/or/
[21:25:01] <wjp> wow, can't remember the last time I did that...
[21:25:09] <Dark-Star> about function calls: would it be better then to create a seperate function? or just copy/paste the code from the current opcode?
[21:25:09] <wjp> (using the dutch 'of' instead of the english 'or')
[21:25:29] <wjp> I'd make a small separate lookup function
[21:26:49] <Dark-Star> adding those cmd line options isn't quite as trivial, I thought about that, too
[21:27:16] <wjp> we use a kind of commandline option parsing library in exult that makes it quite easy
[21:27:36] <Dark-Star> oh, ok, then it's just a matter of porting it from exult to pentagram
[21:28:03] <wjp> the args.[h|cc] files
[21:29:23] --> artaxerxes has joined #exult
[21:29:28] <wjp> hi
[21:29:28] <Dark-Star> OK, I'll look at it when I'm in Linux the next time ;-)
[21:29:28] <artaxerxes> bonjour!
[21:29:34] <artaxerxes> hi wjp
[21:29:51] * Dark-Star thinks that a multi-OS computer is not as good as he once thought...
[21:29:54] <wjp> how's the translating progressing?
[21:29:57] <artaxerxes> good to c you all... V'got a question about usecode! :)
[21:30:26] <artaxerxes> translating is good... I stopped for a little while and now I'm back full force.
[21:31:00] <artaxerxes> now we support the books (thx to the exult dev team) like our site says
[21:31:30] <artaxerxes> + more translation
[21:31:37] <wjp> I can't connect to the site, atm :/
[21:31:58] <artaxerxes> http://klownkiller.multimania.com
[21:32:13] <wjp> that's the one, yes :-)
[21:32:22] <artaxerxes> my question about usecode is: what are the opcode SETR and RTS doing?
[21:32:24] <wjp> the redirect part is working
[21:32:40] <wjp> those names are really messed up... they all look alike :-)
[21:32:54] <wjp> which numbers are they?
[21:32:56] <artaxerxes> you're right... the site looks inaccessible.. :(
[21:33:21] <wjp> I'll just list all return opcodes:
[21:33:31] <artaxerxes> 2D
[21:33:32] <artaxerxes> 32
[21:33:33] <wjp> 0x25: end of procedure
[21:33:39] <wjp> 0x2C: return from procedure
[21:34:00] <wjp> 0x2D: return from function. (pop return value from stack)
[21:34:03] <artaxerxes> procedure?? sounds much like Pascal...
[21:34:12] <wjp> 0x32: end of function reached. (return value is zero)
[21:34:23] <wjp> yeah, that's where I borrowed the terminology from :-)
[21:34:36] <Dark-Star> so what's the difference between "end of procedure" and "return from procedure"? does the former one continue past the end of the code??
[21:34:46] <artaxerxes> how come can there be a 2D followed by a 32 then ? (0954.uc)
[21:35:07] <wjp> 0x25 is the last byte of every proc., 0x32 is the last byte of every function
[21:35:19] <wjp> I think this was probably hardcoded in their compiler
[21:36:09] <artaxerxes> the question from Dark-Star _is_ interesting.
[21:36:27] <wjp> we implement them exactly the same
[21:36:43] <artaxerxes> what do you mean ?
[21:36:57] <wjp> we execute 0x25 and 0x2C _exactly_ the same way
[21:37:41] <wjp> the difference is just the place in the code where they occur. 0x25 occurs only as the last byte
[21:38:47] <artaxerxes> thus what would the usecode interpreter do when stumbling on a 0x2C amidst a usecode call? stop on the spot?
[21:39:09] <wjp> yeah, it's just the equivalent of a C "return;" statement
[21:39:26] <wjp> while 0x25 is the equivalent of the last closing }
[21:40:01] <artaxerxes> is there an easy way of knowing whether a usecode function is a procedure or a function (besides looking at the last opcode) ?
[21:40:09] <wjp> not AFAIK
[21:40:18] <artaxerxes> I see
[21:40:29] <artaxerxes> again, I thank you for your help wjp.
[21:40:35] <wjp> sure, no problem
[21:41:45] <artaxerxes> actually I was wondering if the engine is able to use difference usecode file on the fly... say you hit a button and suddently it runs in another language.... ?
[21:42:03] <artaxerxes> (text.flx and fonts.vga should be reloaded too)
[21:42:11] <wjp> the usecode part is easy
[21:42:16] <artaxerxes> s/difference/different/
[21:42:27] <wjp> don't know about text.flx and fonts.vga
[21:43:24] <artaxerxes> you mean that at every run of a function, the usecode file is opened, sought, read, interpreted, executed and closed ?
[21:43:41] <wjp> no, it's just that Jeff already implemented reloading a while back
[21:43:42] <wjp> :-)
[21:43:50] <artaxerxes> Ah... :)
[21:43:58] <artaxerxes> nice
[21:44:08] <wjp> (not the loading of a different file yet, but that part shouldn't be hard)
[21:44:11] <artaxerxes> (for debugging IIRC)
[21:45:40] <artaxerxes> .argc is the number of parameter passed to the usecode function ? is .localc the number of "register" used in the function too ?
[21:45:52] <artaxerxes> how about .externsize ?
[21:46:34] <wjp> .argc = number of arguments, .localc = number of extra local variables/registers. (arguments act as locals too)
[21:46:55] <wjp> (so if argc = 2, localc = 1, there's three local variables, of which [0000] and [0001] are the arguments)
[21:47:28] <wjp> .externsize is the size of the table of 'externals', which are just other usecode function numbers that are called by this function
[21:47:29] <artaxerxes> thus [0002] is accessible too ?
[21:47:36] <wjp> yes
[21:47:41] <artaxerxes> I see
[21:48:03] <artaxerxes> what is the purpose of externsize since they are all listed anyways? debugging ?
[21:48:25] <wjp> why not display it?
[21:48:43] <wjp> it makes re-assembling easier, anyway
[21:48:49] <artaxerxes> curiosity... I always like to know why a certain thing needs to be there... :)
[21:50:17] <artaxerxes> btw, when certain numbers are used for a cmpgt for instance, they are often given like that: FFFDH (-3) instead of 0003H (3)... why are they put in negative ?
[21:50:52] <wjp> hm? x > 3 is quite different from x > -3
[21:51:02] <artaxerxes> 0403.uc (offset 0000) for instance
[21:52:01] <wjp> negative numbers are often used for NPC numbers. -3 as an argument to a lot of intrinsics means NPC#3
[21:52:20] <artaxerxes> curious... I wonder why it is such..
[21:55:18] <artaxerxes> _Get_npc_id(NPC) returns the list of flags for this NPC ?
[21:56:44] <wjp> no, it returns a specific number associated with an NPC. (the "ID")
[21:57:02] <wjp> not a clue why it is called 'id'
[21:57:19] <wjp> it's listed in the NPC Flags in the NPC Editor in the F2 screen
[22:00:29] <artaxerxes> it seems that 0403.uc@0409 -> 0403.uc@0414 does the following: if(_get_npc_id(-2) == 30) say("Shamino's whereabouts"); I know that happens when Shamino is *not* back in the team... so I suppose that get_npc_id(-2) returns some kind of information that says whether or not Shamino is following...
[22:01:07] <artaxerxes> that's why I used the term 'flag' although inappropriate.
[22:01:13] * wjp nods
[22:02:52] * wjp has to go
[22:02:57] <wjp> good night
[22:02:59] <artaxerxes> bye... thx
[22:02:59] <Dark-Star> bye
[22:03:00] <Fingolfin> night
[22:03:03] <-- wjp has left IRC ("[x]chat")
[22:04:42] * Dark-Star has to go too
[22:04:46] <artaxerxes> bye
[22:04:46] <Dark-Star> bye
[22:05:05] <-- Dark-Star has left IRC ("segmentation fault")
[22:06:41] <artaxerxes> I am leaving too... bye all!
[22:06:49] <-- artaxerxes has left IRC ("using sirc version 2.211+KSIRC/1.1")
[23:08:37] <-- Fingolfin has left IRC ("good night, dream well")