#exult@irc.freenode.net logs for 20 Aug 2002 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage

[00:14:07] <-- Dominus has left IRC ("Exult! Exult! Exult!")
[00:29:47] --> Kirben has joined #exult
[00:29:47] --- ChanServ gives channel operator status to Kirben
[05:56:22] --> ShadwChsr has joined #Exult
[07:52:14] --- Darke|afk is now known as Darke
[08:11:23] <-- ShadwChsr has left IRC ()
[09:44:15] <-- Darke has left IRC (lerouge.openprojects.net irc.openprojects.net)
[09:50:44] --> Darke has joined #exult
[09:50:44] --- ChanServ gives channel operator status to Darke
[10:37:08] <-- Darke has left IRC (lerouge.openprojects.net irc.openprojects.net)
[10:37:25] --> Darke has joined #exult
[10:59:00] --> wjp has joined #exult
[10:59:00] --- ChanServ gives channel operator status to wjp
[10:59:18] <wjp> hi
[11:00:24] <Darke> Hi.
[11:32:04] --> Kirben2 has joined #exult
[11:34:12] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[11:46:30] * Darke wonders if there's anyway to get the 'root' directory of the compile, in pentagram's build system.
[11:47:22] <Darke> For example, it'd be nice to be able to write '$(DIR)/somedir/file.o' rather then '../../somedir/file.o'.
[11:49:35] <Darke> Neither $(srcdir) nor $(top_builddir) seem to give me the right value, hmm...
[11:50:29] <Darke> Nor does $(top_srcdir).
[11:56:39] * Darke hmms... and guesses it's not possible. Probably due to the recursive nature of the make. *eardroop*
[12:16:01] --> SB-X has joined #exult
[12:16:07] <SB-X> hello
[12:17:08] * SB-X returns Darke's ears to their normal, upright position.
[12:24:35] --> Colourless has joined #Exult
[12:24:35] --- ChanServ gives channel operator status to Colourless
[12:24:51] <Colourless> hi
[12:25:35] <SB-X> hi
[12:27:13] <SB-X> Darke: you can set your own variable for the top directory name
[12:30:31] <SB-X> but if your calling make in a subdir you cant get the base dir unless you set that with autoconf
[12:30:40] <SB-X> you're
[12:31:53] * Darke earperks. Thanks SB-X!
[12:32:41] <Darke> Hi Colourless, SB-X, welcome to our merry band for this night^Wevening^Wday!
[12:33:23] <Colourless> ^W is such a *nix centric thing to say :-)
[12:34:03] <Darke> SB-X: Thanks for that. *grin* There doesn't seem to be an easy way to do it then.
[12:35:22] <Darke> Colourless: For reference, the only time I've encountered such an abberation was with an older version of the windows telnet client, that couldn't autonegotiate the term type properly. So to me, it's a very 'windows centric' thing to say. *grin*
[12:35:53] <Darke> Colourless: Incidentally, what version of U8 did you use to make the intrinsics[] array in intrinsics.h? 2.12?
[12:36:05] <Colourless> yep, 2.12
[12:36:16] <Colourless> 2.10 seems to be the same
[12:36:34] <Colourless> using 2.10 usecode in 2.12 didn't seem to cause any problems
[12:37:08] <Colourless> Darke: that's not windows centric at all. it's called using incorrect terminal types
[12:38:03] <Darke> Colourless: More then likely because the upgrade would have added functions to the source, rather then removed them. *grin* Is TonysBalls in the right place? Wait, don't answer that.
[12:39:00] <Colourless> well, i could try grabbing the 2.10 names
[12:41:20] <Colourless> but... 2.10 doesn't have debugging info does it
[12:41:41] <Darke> Class 672 (LEVER) in Func_EB uses a TonysBalls. Could you perhaps check that it does so in 2.10? It seems like a function that wouldn't change. I just don't have any 2.10 versions easily accessable atm.
[12:42:08] <Colourless> ok, just a sec
[12:42:13] <SB-X> does Crusader have TonysBalls?
[12:42:38] <Colourless> i would hope that tony has his balls, not crusader :-)
[12:42:39] * Darke nods. That's the problem. *grin* Decoding which functions have changed numbers between the versions of U8 is going to be relatively easy, TGWDS is going to be a nightmare though. *grin*
[12:42:55] * Darke laughs!
[12:43:43] <SB-X> Colourless stole my joke :)
[12:44:19] <Darke> The exact offset is: 01D8: 0F calli 0Ah 00FB (TonysBalls(
[12:45:01] * Darke gives SB-X Crusader's balls in compensation.
[12:45:37] <SB-X> ...
[12:45:39] <Colourless> 01DA: 0F calli 0Ah 00FB (TonysBalls(short,short,ushort,ushort,ushort))
[12:46:40] <Colourless> note that i'm using the translated spanish version of u8
[12:46:43] <Darke> Cool. Can you drop the four or so lines before it into the channel? Just being paranoid. *grin*
[12:46:54] <Colourless> that could account for the 4 byte difference
[12:47:05] <Darke> Nice to know they didn't break anything too badly then. *grin*
[12:47:11] <Darke> Yes, it probably would.
[12:47:19] <Colourless> Func_ED (Event 1) LEVER::use():
[12:47:19] <Colourless> 00ED: 5A init 23
[12:47:23] <Colourless> what is yours?
[12:47:46] <Darke> Func_EB (Event 1) LEVER::use():
[12:47:47] <Darke> 00EB: 5A init 23
[12:47:49] <Colourless> 2 byte difference i mean, not 4 :-)
[12:48:04] <Colourless> 00A8: 0D push string "palanca rota "
[12:48:09] <Colourless> and
[12:48:09] <Colourless> 00CE: 0D push string "palanca "
[12:48:15] <Colourless> what's yours?
[12:48:42] <Darke> 00A8: 0D push string "broken lever "
[12:48:49] <Darke> 00CE: 0D push string "lever "
[12:49:19] <Colourless> hmm, that is where the 2 extra are comming from
[12:49:23] <Colourless> 0BA4: 79 end
[12:50:05] <Darke> 0BA2: 79 end
[12:50:47] <Colourless> ok, preliminary analysis complete. result: no differences
[12:50:52] <SB-X> how many operations are there?
[12:51:14] <Darke> How many intrinsics?
[12:51:33] <SB-X> no
[12:51:45] <Colourless> 254 intrinsics at last count :-)
[12:52:19] <SB-X> i mean bytecode operations like push
[12:52:23] <Darke> IIRC, we only need to implement about 180 or so of them, since that's all that were used. *grin*
[12:52:48] <Darke> 0x7a
[12:52:52] <Colourless> about 128
[12:53:09] <SB-X> ok
[12:53:10] <Colourless> and we need to implement most of them
[12:53:14] <SB-X> is there a list? :)
[12:53:20] <Colourless> disasm source
[12:53:32] <Darke> tools/disasm.cc in the old/ module. *grin*
[12:54:03] <SB-X> hmm
[12:54:22] <SB-X> (old == pentagram module in exult)?
[12:54:29] <SB-X> i mean same contents
[12:54:37] <Colourless> not exactly...
[12:54:55] <SB-X> i have that because i unintentionally downloaded all of exult's cvs
[12:55:05] <Darke> Mostly. The disasm.cc in the pentagram/old directory has a few more opcodes added.
[12:55:20] <Colourless> but afaik nothing has significantly changed since we moved penatagram elsewhere
[12:55:26] <SB-X> i dont have pentagram cvs yet
[12:55:29] <Darke> A couple of the opcodes in the exult/pentagram directory are just plain wrong. *grin*
[12:55:39] <Colourless> they are>
[12:56:01] <SB-X> indirect pop
[12:56:07] <SB-X> / pops a 32 bit pointer off the stack and then pops xx
[12:56:07] <SB-X> bytes
[12:56:16] <SB-X> into the location referenced by the pointer
[12:56:42] <SB-X> what use is that?
[12:56:50] <Colourless> you really don't want to know :-)
[12:57:00] <Darke> You _really_ don't want to know. *grin*
[12:57:14] <SB-X> u8 language must have looked a lot different than u7
[12:57:22] * Darke really doesn't want to know either, but he suffers with said knowledge. *grin*
[12:57:27] <Colourless> yes, much much different
[12:57:51] <Darke> It was OO and had inlineable functions for starters. *grin*
[12:59:01] <Colourless> inlines = maximum fun to reverse engineer
[12:59:29] <Colourless> what is more fun is the pointers in usecode, which it also had :-)
[12:59:31] <Darke> From looking at the usecode, the datatypes were byte/string/int(conversion between dword and word appears to be automatic)/structs/pointers(to all of the above).
[12:59:36] --- Colourless is now known as Cless|Away
[12:59:39] <SB-X> heh
[12:59:42] * Darke noddles. Eeeeeevil!
[13:00:18] <SB-X> all this reverse engineering has been something i dont understand anyway
[13:00:35] * Darke paints Colourless an interesting shade of mauve, whilst he's not paying attention.
[13:00:37] <SB-X> if i were looking at a hexdump of a binary file i wouldnt know where to begin figuring out what it means
[13:01:34] <Darke> Step 1: Guess. Step 2: Test. Step 3: Refine. Step 4: Go to step 1. Is pretty much the process. *grin*
[13:01:49] <SB-X> i wouldnt know how to guess :)
[13:02:31] <SB-X> "hmm i bet that 0e is something... *changes it* ... *program crashes* damn"
[13:02:52] <Cless|Away> wjp did all the initial hard work though
[13:03:10] <Cless|Away> he figured 'most' of it out so we could get diassemblies that sort of made sense
[13:03:16] <Darke> You look for patterns. *grin* A bunch of 4 byte ints is pretty distinctive, 2 byte also. A row of printable ascii characters that's null terminated is a string. Note that down.
[13:03:30] * Darke nodnodnods and worships the wjp.
[13:03:39] * SB-X kneels to wjp.
[13:04:24] <SB-X> how does a 4 byte int look any different than 4 bytes?
[13:04:25] <Cless|Away> getting from sort of made sense, to really makes sense... well, we aren't there yet :-)
[13:05:42] * Darke snickers. We're probably 90% of the way there though, thankfully. *grin*
[13:06:45] <SB-X> case 0x15:
[13:06:46] <SB-X> // 15
[13:06:50] <SB-X> // add two longs
[13:06:54] <SB-X> printf("add dword");
[13:06:55] <SB-X> break;
[13:08:16] <Darke> Most of the dword ops were never used in u8, and only a few more were used in TGWDS, the rest are obvious to deduce from that, and really need to be implemented also if we ever get a compiler working. *grin*
[13:09:25] <SB-X> if(crusader) // we don't know what their intrinsics were
[13:09:25] <SB-X> called anyway so we won't bother naming them
[13:09:25] <SB-X> printf("calli\t\t%02Xh %04X (unknown)", i0, i1);
[13:11:16] <SB-X> intrinsics are object-oriented?
[13:11:34] <SB-X> Camera::stopQuake()
[13:11:55] <Darke> Not really, but they are. *grin*
[13:12:13] <Darke> That's where the pointers come into it, and that opcode you mentioned above is used, IIRC.
[13:15:30] <SB-X> in my bytecode interpretor, i have "engine actions" that are object-oriented, and when you call one, you specify the object type number it is a member of, or '0' for global
[13:16:24] <SB-X> and object types are coded into the engine
[13:18:01] <Darke> U8's is much less... elegant. *grin* AFICT, it uses it's knowledge of the internal C code to setup the stack excatly like how a function should be called, and 'calls' it, as if it were raw C.
[13:18:11] <Darke> s/C/C++/g
[13:19:20] <Darke> One of the files that comes with U8, is just a file that is filled with 32bit offsets into the u8.exe, that the 'offset' in the intrinsic references to jump to.
[13:19:46] <SB-X> the usecode has function pointers to the executable?
[13:20:44] <SB-X> is that the optimal way of doing it?
[13:20:50] <Darke> Yep. The 'item' type was just a special wrapper around a *this to an instantiation of an actual C++ class. *grin*
[13:21:17] <Darke> The usecode itself doesn't know about the offsets, the offsets are only known to the usecode machine that's interpreting it.
[13:22:12] <Darke> And no, it isn't. *grin* Works great for speed, but every time you recompile the .exe, you need to recompile (or relink) all the usecode too, since just by adding an extra function to the .exe, you'll alter the table, and thus alter the offsets.
[13:22:35] <SB-X> why is usecode used then?
[13:23:06] <SB-X> oh nm
[13:23:36] <SB-X> i had what you said backwards :)
[13:24:21] <Darke> No problem. *grin* I was wondering if I said, what I actually said anyway. I get the feeling I'm getting rather incoherent.
[13:24:43] <SB-X> what makes the offset lookup is faster than just using a number for each intrinsic?
[13:25:01] <SB-X> you are already using a number for each intrinsic anyway aren't you? then it maps that to the offset as it runs
[13:27:10] <SB-X> i mean, why is "intrinsic = (offsets + 10) faster than "case 10: call intrinsic10" ?
[13:27:39] * SB-X adds another "
[13:27:51] <Darke> Because the way the stack is setup, all you need to do is to actually perform the actual call to the internal function, you don't need to have a fullblown function call which sets up the stack for you. If that makes sense. *grin*
[13:28:16] <Darke> Think of the usecode stack, being a literal hardware stack and you writing assembler code to call a function.
[13:29:20] * Darke is pretty sure they used the usecode stack in a similar manner. *grin* However he's not going to grovel through the U8.EXE just to prove that.
[13:29:47] * SB-X thinks U8.EXE knows too much about itself.
[13:30:01] <Darke> Far, far, far too much about itself. *grin*
[13:31:23] <SB-X> i need to leave
[13:31:25] <SB-X> see you later
[13:31:30] <Darke> Bye!
[13:31:31] <-- SB-X has left IRC ("Ultima! Ultima! Ultima!")
[13:56:49] <-- artaxerxes|zombi has left IRC ("using sirc version 2.211+KSIRC/1.1")
[14:01:05] <Kirben2> Is gcc 3.2 much of an improvement of 3.1 ?
[14:01:19] <Kirben2> over 3.1 Imean
[14:01:41] * Darke would expect it to be a little more stable perhaps. *grin*
[14:11:25] <Kirben2> ok, will use it for future snapshots. I hope they fixed the inline specific mingw bug too.
[14:13:37] --- Cless|Away is now known as Colourless
[14:20:46] --- Kirben2 is now known as Kirben
[14:40:10] <Colourless> it's about time I actually did it. i've finally made a 1.1.0cvs snapshot installer for your kirben. it now includes SDL_mixer.dll
[14:41:12] <Kirben> ok can dcc or email.
[14:46:10] <Colourless> dcc doesn't seem to be working, i'll email it
[14:46:32] <Kirben> ok
[14:46:42] <Colourless> address?
[14:51:52] <wjp> time for me to go home; I'll bbl
[14:52:03] <Colourless> cya
[14:52:12] <-- wjp has left IRC ("gtg")
[14:56:05] <Colourless> Kirben: sent
[14:57:05] <Kirben> thanks, arrived fine.
[15:06:48] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[15:11:24] * Darke acks at the time and disappears. Night all!
[15:11:29] <Colourless> cya
[15:11:37] --- Darke is now known as Darke|afk
[15:27:27] --> wjp has joined #exult
[15:27:27] --- ChanServ gives channel operator status to wjp
[15:28:41] <Colourless> wb
[15:29:19] <wjp> thx
[15:30:31] <Colourless> Mr Mike = Mike McShaffry BTW
[15:33:15] <Colourless> according to the credit, he did the gumps :-)
[15:33:26] <Colourless> which, well, is exactly what Mr Mike said :-)
[15:33:45] <wjp> :-)
[15:35:24] <Colourless> more interestingly, he was Director for Ultima 8 :-)
[17:35:44] <-- Colourless has left IRC (Read error: 104 (Connection reset by peer))
[17:36:21] --> Colourless has joined #Exult
[17:36:34] --- ChanServ gives channel operator status to Colourless
[18:31:28] --> artaxerxes has joined #exult
[18:31:28] --- ChanServ gives channel operator status to artaxerxes
[18:31:34] <artaxerxes> yo
[18:31:41] <wjp> hi
[18:32:10] <Colourless> hi
[18:32:19] <artaxerxes> I dunno if you were aware but Ultima Reconstruction did not even mention Exult!
[18:32:38] <artaxerxes> Not even in the game engine part. So I contacted the guy
[18:32:49] <Colourless> you sure?
[18:32:51] <artaxerxes> let's see what's gonna happen
[18:32:52] <artaxerxes> yup
[18:32:57] <Colourless> what's the url?
[18:32:59] <wjp> I'm pretty sure exult was in there
[18:32:59] <artaxerxes> just been 1 hour ago
[18:33:03] <wjp> reconstruction.voyd.net/
[18:33:15] <Colourless> i'm sure it was there too, but in an awkard place
[18:33:24] <wjp> hm, I see it
[18:33:44] <wjp> in the 'classic remakes'
[18:34:30] <artaxerxes> oups
[18:34:36] <artaxerxes> not very intuitive
[18:34:42] <artaxerxes> I had looked though
[18:35:28] --> Fingolfin has joined #exult
[18:35:33] <artaxerxes> Fingolfin!!!
[18:35:42] <Fingolfin> yo
[18:35:44] --- ChanServ gives channel operator status to Fingolfin
[18:35:49] <Colourless> hi
[18:35:49] <wjp> hi Max
[18:36:03] <artaxerxes> I started and finished Dott on linux yesterday with scummvm
[18:37:24] <artaxerxes> only one glitch: when the chrono-toilets are plugged, the graphics are a bit off.. Also, -enull does not work properly
[18:37:49] <artaxerxes> but besides that, all is perfect/
[18:38:01] <artaxerxes> I wonder if there is any way to play Gabriel Knight on Linux... :)
[18:38:52] <Colourless> hmmm. that 'should' be an SCID based engine
[18:40:24] <Colourless> there are projects around the place to create SCI interpreters
[18:40:30] <wjp> freesci?
[18:40:43] <Colourless> that should be a good example
[18:41:39] <Colourless> but it's doesn't work with the newer games it seems
[18:41:42] <artaxerxes> freesci.linuxgames.com
[18:41:55] <artaxerxes> interesting
[18:41:57] <wjp> yeah, that's the one
[18:45:40] <artaxerxes> doesny
[18:45:49] <artaxerxes> doesn't talk about GK
[18:45:57] <Colourless> too new
[18:45:59] <wjp> yeah, GK is probably SCI32 or something?
[18:46:34] <Colourless> yeah probably
[18:47:05] <wjp> oh, we talked about this 2 July 2001
[18:48:19] <wjp> [21:24:57] <jameson> LB2 is late SCI1, though. IIRC GK1 is SCI32, which was a new engine altogether.
[18:50:40] <artaxerxes> hilarious! jeff has the exact same game tastes as I do! (although I never played LB)
[18:50:56] <Colourless> LB2 was pretty cool
[19:01:58] <Fingolfin> re SCI32, see also the FreeSCI homepage, where they mention this
[19:02:20] <Fingolfin> i.e. there is apparently a SCI32 decoder, so if anybody is interested to enhance FreeSCI using the knowledge of that encoder, go for it =)
[19:11:12] <artaxerxes> =)
[19:24:21] <artaxerxes> translating is such a boring job.... :/
[19:24:38] <artaxerxes> I've been working alone for several weeks now.
[19:25:30] <wjp> hm, what happened to the other 7 translators? :/
[19:25:35] <artaxerxes> happily, there is "only" 85 files left over
[19:25:49] <artaxerxes> I guess it's the same as for Exult's about page... :)
[19:25:56] <wjp> :-)
[19:26:15] <artaxerxes> only KK is still up and running
[19:26:25] <artaxerxes> haven't heard of the others in a long, long time
[19:27:43] <artaxerxes> it's amazing how much text there is anyways...
[20:06:16] <Colourless> time for me to depart
[20:06:24] <-- Colourless has left IRC ("cya")
[22:33:53] <-- wjp has left IRC (lerouge.openprojects.net irc.openprojects.net)
[22:35:01] --> wjp has joined #exult
[22:38:29] <wjp> time to go; g'night
[22:38:36] <-- wjp has left IRC ("Zzzz...")