#pentagram@irc.freenode.net logs for 12 Mar 2004 (GMT)

Archive Today Yesterday Tomorrow
Pentagram homepage

[03:08:48] <-- servus has left IRC ("Leaving")
[07:06:37] --> SB-X has joined #pentagram
[09:38:56] <-- SB-X has left IRC ("bbr")
[11:47:39] --> Colourless has joined #Pentagram
[11:47:44] --- ChanServ gives channel operator status to Colourless
[11:48:28] <Colourless> hi
[13:29:21] <-- Kirben has left IRC ("System Meltdown")
[17:41:36] --> Fingolfin has joined #pentagram
[17:41:36] --- ChanServ gives channel operator status to Fingolfin
[18:34:43] <wjp> hm, pity the 'demo, run pyros' sequence from the cheat menu is broken
[18:34:56] <wjp> the master and you never appear
[18:35:15] <wjp> and stderr is filled with endless "Warning: invalid item passed to area search" errors
[18:36:29] <Fingolfin> :-)
[18:37:46] <-- Fingolfin has left IRC ("bye")
[18:43:03] <Colourless> i wonder what exactly the problem is
[19:02:48] <wjp> we really need a way to get a limited amount of usecode debugging info
[19:03:10] <Colourless> break points.... :-)
[19:04:05] <Colourless> having a break point when area search has an invalid object would be a start for finding 'that' specific problem
[19:05:33] <Colourless> that is hardly a useful general solution
[19:06:08] <Colourless> what is kind of needed is a way to debug a specific process
[19:06:58] <wjp> I'll at least have it dump the current IP
[19:07:01] <Colourless> at the moment we can only attempt to debug everything, or a specific class
[19:07:53] <wjp> class 0x199, IP 0x117
[19:07:59] <wjp> (first one)
[19:08:06] <Colourless> when the game is paused we can still enter commands in the console correct?
[19:08:30] <wjp> yes
[19:08:51] <Colourless> we 'could' implmented a gdb like debugger thing in the console
[19:10:19] <Colourless> s/implemented/implement/
[19:11:10] <Colourless> though that would probably be overkill
[19:11:17] <wjp> we'd need a way to pause in the middle of a frame
[19:11:31] <Colourless> however step-by-step execution would be useful
[19:11:58] <wjp> (aside: I hacked in frame-by-frame execution a while back)
[19:12:32] <Colourless> the only way i could think of pausing in the middle of a frame would be with breakpoint 'registers' that stop usecode execution when specific instrucitons are hit
[19:14:02] <Colourless> then we'd need to 'drop' out of all execution
[19:14:10] <Colourless> or enter a mini loop
[19:14:32] <wjp> some kind of console-only loop might be possible
[19:14:54] <wjp> or have an external debugger
[19:16:30] <wjp> anyway, that class in which the 'invalid item' occurs is the CLRLAVA class
[19:21:09] <Colourless> considering that class only has one function
[19:21:36] <Colourless> i don't think it's related to the cinematic not playing
[19:22:32] <Colourless> i'm guessing a might higher chance that it's got to do with an error with collisions
[19:22:52] <wjp> quite possible
[19:28:00] <wjp> the relevant class is 109 (006D PYROS)
[19:28:46] <wjp> function 247C, probably
[19:29:55] <wjp> I wonder where the avatar is during the sequence
[19:30:15] <wjp> map 12, (15614,16638,56)
[19:30:53] <wjp> that's somewhere near the library
[19:33:03] <wjp> Malchir is teleported in at 2715
[19:33:10] <wjp> (or should be, anyway)
[19:36:57] <wjp> Actor::teleport: 27 to 12,15998,16638,64
[19:36:58] <wjp> Actor::teleport: 1 to 12,15614,16638,64
[19:38:11] <wjp> interestingly those two spots seem to be correct relative to eachother
[19:38:27] <wjp> it places the avatar to the left and a bit up relative to Malchir
[19:39:22] <Colourless> do those funcs get executed though
[19:39:39] <wjp> well, the relative location is ok, the absolute location is all wrong
[19:39:56] <wjp> it's not on the summoning pentagram but somewhere in the middle of the 'city'
[19:40:54] <wjp> Actor::teleport: 32 to 12,17119,18911,64 <-- Beren
[19:41:29] <Colourless> do the avatar and Malchir teleport again?
[19:42:02] <wjp> no
[19:42:18] * wjp hmms
[19:42:49] <wjp> Beren teleports to [BP-18]-0x200, [BP-1A]-0x100, [BP-1B]+0x8
[19:43:23] <wjp> those vars are the return values of this->getX(), getY() and getZ()
[19:44:00] <wjp> (I'm assuming that 'this' is an egg somewhere around there)
[19:45:11] <Colourless> i think that's the bottom corner of the pentagram whever the thing is
[19:45:35] <Colourless> since the camera is also placed relative to that point
[19:45:38] <wjp> malchir is teleported to getX(),getY(),getZ()+8
[19:46:21] <wjp> which _should_ be only (512,256,0) away from Beren
[19:46:38] <wjp> instead he ends up several 1000 away in both directions
[19:47:37] <Colourless> who is teleported at 263D
[19:47:53] <wjp> Bane or Vardion, I'm guessing
[19:47:56] <wjp> (depending on who died)
[19:48:13] <Colourless> are they in the right spot?
[19:48:26] <wjp> the other three people are in the right spot
[19:48:32] <wjp> just the avatar and Malchir are missing
[19:49:03] <wjp> retval of getX(),getY(),getZ() at the start: 43FFh 4BFFh 38h
[19:49:43] <Colourless> crap
[19:49:54] <Colourless> malchir is teleported in a inline process
[19:50:09] <wjp> he is?
[19:50:18] <Colourless> yes
[19:50:31] <Colourless> 26C8: 58 spawn inline 006D:247C+026D=26E9 02 00 (PYROS::247C+026D)
[19:50:32] <wjp> ah, indeed
[19:50:42] <wjp> so we're screwing up the this pointer
[19:53:09] <wjp> now how did this work again? :-)
[19:55:20] <Colourless> well, the line i just Ctrl-C Ctrl-V scares me no end now :-)
[19:55:51] <wjp> it does?
[19:56:00] <Colourless> no, not really :-)
[19:56:34] <Colourless> i'm pretty sure that line is saying there should be a this pointer
[19:56:46] <Colourless> that 02 would be the size of the object as always
[19:56:56] <wjp> we do create and copy this
[19:57:09] <Colourless> this pointers for inline processes 'should' just be copies of the this pointer for the 'host' process
[19:57:18] <wjp> what I don't like is the set info call at the start
[19:57:20] <Colourless> there is one way to find out if we do
[19:57:37] <wjp> hm, although that should affect this
[19:58:20] <Colourless> the set info shouldn't matter. It's making the process belong to the avatar
[19:58:39] <wjp> Malchir, actually
[19:58:59] <wjp> or did you switch to the script teleporting the avatar?
[19:59:15] <wjp> (no objections, but we should probably be looking at the same code :-) )
[19:59:45] * Colourless was getting args to set info the wrong way round
[19:59:56] <Colourless> we should be copying the this pointers
[20:01:51] <wjp> ah
[20:02:18] <wjp> we're copying the _pointer_, not this itself, I think
[20:02:21] <Colourless> ok... might be mistaken here..
[20:03:28] <Colourless> well, looks like you have a clue about what's going on :-)
[20:03:35] <wjp> I pass a pointer to the this pointer to the new process
[20:04:05] <wjp> yay, works now :-)
[20:04:22] <Colourless> i wonder what else that fixes :-)
[20:05:21] <Colourless> i'm curious as to why you would have done that
[20:05:31] <wjp> most likely because I was confused
[20:05:57] <Colourless> you just need to pass the this pointer to UCProcess::UCProcess and it will copy the pointer
[20:06:08] <wjp> yes
[20:06:14] <Colourless> s/copy/deference and make a new copy of/
[20:06:18] <wjp> but I was passing a pointer to the pointer :-)
[20:06:22] <Colourless> s/deference/dereference/
[20:06:24] <Colourless> yeah
[20:06:50] <wjp> not all the candles are lit properly, it seems
[20:06:59] <wjp> Kal Vas Flam Bal Xen!
[20:08:03] <Colourless> you know the execution scene uses inline processes
[20:08:28] <wjp> also the candles in the back overlap Pyros
[20:08:50] <Colourless> rendering errors... go complain to.... oh wait... me
[20:17:32] <wjp> Pyros scene is running quite well now
[20:17:46] <wjp> those unlit candles bug me a bit, though
[20:18:39] <wjp> gah
[20:19:06] <wjp> now that was stupid
[20:19:11] * wjp commits UCMachine.cpp again
[20:19:34] <Colourless> fine then i'll fix it tonight :-)
[20:19:48] <Colourless> then again, maybe not :-)
[20:20:12] <wjp> I should map that playSFX intrinsic to 'true'
[20:20:21] <wjp> those messages are annoying me :-)
[20:22:29] <Colourless> so do we have an actual list anywhere of unimplemented intrinsics anywhere, other than u8intrinsics.h
[20:23:28] <wjp> no
[20:24:44] <Colourless> might be useful
[20:25:26] <wjp> console output really slows things down
[20:26:35] <Colourless> this is pentagram's graphics console, or operating system console?
[20:26:42] <wjp> don't know which one is causing it
[20:27:30] <Colourless> for me if i leave the os console visible when pentagram is spewing it's usecode disassembly pentagram runs extremely slowly
[20:27:38] <Colourless> if i minimize it all is ok
[20:28:16] <Colourless> something about the operating system liking to update every char/line.
[20:28:51] <wjp> yes, appears to be the terminal
[20:29:04] <wjp> redirecting output to /dev/null makes speed normal
[20:29:24] <wjp> I don't think it helps we send each character to stdout/stderr individually
[20:29:56] <Colourless> stdout should be buffered
[20:31:01] <Colourless> so outputting to it shouldn't hurt too much.
[20:31:06] <wjp> stderr isn't, though
[20:32:21] <wjp> just redirecting stderr to /dev/null already makes the speed acceptable
[20:32:26] <wjp> (even when dumping disassembly)
[20:32:49] <Colourless> how much do we output to stderr
[20:33:03] <wjp> unimplemented intrinsics, invalid items to the area search
[20:33:48] <wjp> (in this case)
[20:34:16] <Colourless> even just a few outputs to stderr per frame could probably hurt a lot
[20:34:33] <Colourless> especially if there is lots of output to stdout
[20:34:53] <Colourless> each output to stderr could forcing the terminal window to repainted
[20:54:28] --> Dominus has joined #pentagram
[20:54:30] --- ChanServ gives channel operator status to Dominus
[20:54:35] <wjp> hi
[20:54:43] <Colourless> hi
[20:54:56] <Dominus> hey ho
[21:05:51] <-- Colourless has left IRC ("casts invisibility")
[21:42:24] <-- Dominus has left IRC ("a pooka invited me for a drink")
[23:12:02] --> Kirben has joined #pentagram
[23:12:02] --- ChanServ gives channel operator status to Kirben
[23:35:33] --> shinji-kun has joined #pentagram
[23:43:37] <-- shinji-kun has left IRC (Remote closed the connection)