#pentagram@irc.freenode.net logs for 12 May 2003 (GMT)

Archive Today Yesterday Tomorrow
Pentagram homepage


[01:20:11] --> Kirben has joined #pentagram
[01:20:11] --- ChanServ gives channel operator status to Kirben
[07:10:05] --> wjp has joined #pentagram
[07:10:06] --- ChanServ gives channel operator status to wjp
[07:15:07] --- wjp is now known as wjp|work
[08:06:29] <-- DarkeZzz has left IRC ("Inficio-Infeci-Infectum")
[08:15:01] --> Darke has joined #pentagram
[09:51:51] --> Cashman has joined #pentagram
[09:57:01] <Cashman> how have things been going Darke - hehe turn up late for work?!
[09:59:43] <Darke> Only a little. *grin*
[10:00:38] <Cashman> ok
[10:01:48] <Cashman> what about with pentagram?
[10:01:58] <Cashman> I here you can talk to davon now.. interesting
[10:02:12] <Cashman> I'll have to update my copy of the cvs later and recompile
[10:03:07] <Cashman> is that new xml tree struct for the cfg shown in the cvs changes log - ok and current!
[10:03:24] * Darke hasn't had a chance to do anything with pentagram. Tracking down bugs in exult with the new bison at the moment.
[10:03:47] <Cashman> is exult still undergoing some porting?!
[10:04:39] <Cashman> I'll leave you to it Darke and talk to you l8er
[10:05:17] <Darke> Not really much afaik.
[10:05:47] <Cashman> whats it like talking to davon anyways?
[10:06:10] <Cashman> or is it devon - I can't remember the spelling!
[10:06:23] <Darke> Umm... I dunno. *grin*
[10:06:45] * Darke can't remember doing so in the original, since he hasn't really played it, and doesn't have a current compiled copy of pentagram.
[10:07:38] <Cashman> hehe so you been relying on wjp etc. to see if you broke and cvs last nite! and early this morning?
[10:07:58] <Cashman> oops "broke any cvs"
[10:10:58] <wjp|work> Darke didn't commit anything since last night
[10:11:05] <wjp|work> (he was sleeping/working/etc... :-) )
[10:11:10] <wjp|work> I was the one who was breaking cvs ;-)
[10:11:22] <Cashman> hehe and colourless ?
[10:11:54] <Cashman> oh hows talking to davon wjp?
[10:12:00] <wjp|work> working?
[10:12:18] <Cashman> eh! whats the question mark for
[10:12:42] <wjp|work> because I was wondering what you were asking :-)
[10:13:05] <Cashman> hows talking to davon in pentagram! does it work alright
[10:17:38] <Cashman> l8er
[10:17:41] <-- Cashman has left IRC ()
[11:16:12] --> Cashman has joined #pentagram
[11:18:34] <Cashman> Darke you around
[11:18:57] * Cashman pulls out a majic mushroom and starts munching on it
[11:19:10] <Cashman> that can't be good 4 ya
[11:32:49] <wjp|work> actually it can
[11:32:54] <wjp|work> but only if it has green spots :-)
[11:33:19] <wjp|work> if it has purple spots you'd better have some curing potions :-)
[11:34:00] <Cashman> yeah!
[11:34:46] <wjp|work> (or maybe it was the other way around... it's been too long since I played u8)
[11:34:53] <Cashman> I find it interesting how there 256 bit palette had some extention to cover fading in and out of spinny colours for the mushroom effects
[11:35:11] <wjp|work> a 256 bit palette? :-)
[11:35:20] <wjp|work> don't think I've ever seen one of those ;-)
[11:36:09] <Cashman> oops!
[11:36:21] <Cashman> hehe 8 bit palette! 256 attributes grrrr
[11:36:53] <Cashman> hehe sorry
[11:37:47] <Cashman> 768 + a few extra attributes! - hmm crusader series uses a few palettes
[11:37:58] <wjp|work> what do you mean?
[11:38:14] <wjp|work> (with "768 + a few extra attr.")
[11:39:47] <Cashman> oh 8 bit palette rgb but the file is slightly bigger 772 4 extra bytes
[11:40:21] <Cashman> I presumed origionally that this was for changing the palette! offsetting at different points to creat an effect? eh I dont know
[11:40:23] <Cashman> they must have been for somthing
[11:40:50] <wjp|work> no, extra bytes are header information
[11:40:54] <Cashman> usually you offset at 0 right! or first byte
[11:40:58] <Cashman> or is it the 4th
[11:41:02] <wjp|work> it says there's one palette in the file
[11:41:06] <Cashman> oh ok
[11:41:15] <Cashman> oh ok! so its god structure like flx
[11:41:29] <wjp|work> a bit simpler, since palettes are fixed size
[11:41:34] <Cashman> yeah
[11:42:05] <Cashman> do you remember seeing those spinny colour fades!
[11:42:08] <Cashman> in the origional game
[11:42:33] <wjp|work> Colourless recently added support for that in the map viewer in old/
[11:42:55] <wjp|work> press 'm' (for mushroom mode)
[11:42:59] <Cashman> oh ok! coolz
[11:43:02] <Cashman> hehe
[11:43:58] <Cashman> did get it like the origional - must be usecode controlled? right or some other file hack to see how it worked
[11:44:18] <Cashman> I mean its a simple effect right but exactally what colourless etc.
[11:44:28] <Cashman> hmm have to talk to colourless I surpose
[11:44:51] <wjp|work> I don't remember how the original looked exactly
[11:45:03] <wjp|work> Colourless' mushroom mode looks very good though :-)
[11:45:31] <Cashman> oh ok! so a good guess you could say!
[11:45:33] <Cashman> doesnt matter anyways - so long as it has the same effect
[12:17:27] --> Colourless has joined #Pentagram
[12:17:27] --- ChanServ gives channel operator status to Colourless
[12:17:59] <wjp|work> hi
[12:18:15] <wjp|work> did I give you my over-excited "You can talk to Devon now!" speech yet? :-)
[12:18:59] <Colourless> i noticed :-)
[12:19:17] <Darke> We noticed. *grin*
[12:19:43] <wjp|work> and Dominus found out that the 'Time' cheat works :-)
[12:19:50] <wjp|work> so that means you can actually cheat before you can move :-)
[12:20:06] <Colourless> but does it give you the correct time :-)
[12:20:20] <wjp|work> bloodwatch... good enough :-)
[12:21:03] <Cashman> hehe yeah alsome!!
[12:21:26] <Cashman> I better update cvs now
[12:21:26] <Cashman> my copy
[12:21:26] <Cashman> so I can see
[12:21:40] <Cashman> the good news
[12:24:28] <-- Cashman has left IRC ()
[12:32:51] --> Cashman has joined #pentagram
[12:34:31] <Cashman> eeeh is pentagram at sourceforge working!
[12:34:40] <Cashman> or do I have tmp problems on my comp
[12:34:57] <wjp|work> what do you mean?
[12:35:20] <Cashman> can get onto sourceforge website! and cvs wouldnt update!
[12:35:24] <Cashman> I might have probs
[12:35:31] <wjp|work> probably SF
[12:36:12] <Cashman> can you access pentagram at sourceforge
[12:36:25] <wjp|work> SF has been very slow all day
[12:36:44] <Cashman> hmmm ok
[12:37:10] <Cashman> yeah well I cant download cvs
[12:37:30] <wjp|work> just retry after a while
[12:37:43] <Cashman> I guess so
[12:40:07] <Cashman> hehe now I get the maintenance message!
[12:40:17] <Cashman> servers down
[12:40:36] * Cashman slaps Darke around a bit with a large trout
[12:40:45] * Cashman slapped himself for getting all edgy
[12:45:24] <Cashman> when sorceforge is back - there arnt any new files added to cvs right?! I last updated my copy 24 hrs ago
[12:45:32] <Cashman> just source updates right?!
[12:45:51] <wjp|work> hm, possibly some new files
[12:46:20] <Cashman> hmm ok I'll check then l8er - oh yeah and theres Darkes new structure for config
[13:24:02] --> Ember has joined #pentagram
[13:25:21] * Ember sighs and makes a mental note to be *just* a little more careful when configuring her adsl modem next time. Accidentally clicking the 'save&reset' button rather then just 'save' has unfortunately consequencs.
[13:26:25] <Colourless> :-)
[13:28:03] <Cashman> heh
[13:29:20] * Cashman throws a fish at Darke and tells him to get his evil side called ember back before she does somthing evil evil
[13:30:41] * Ember tailtwitches and tries to remember the ghostkill command.
[13:31:10] <-- Darke has left IRC (Killed (NickServ (Ghost: Ember!~Darke@m081-032.nv.iinet.net.au)))
[13:31:16] --- Ember is now known as Darke
[13:31:26] --- ChanServ gives channel operator status to Darke
[13:38:54] <Cashman> eh
[13:39:06] <Cashman> moo mo moo moo moo!
[13:39:17] <Cashman> hello Darke
[13:39:29] --- Cashman is now known as Stuff
[13:40:25] * Darke stuffs, stuff into a package and sends it to Africa.
[13:42:27] * Darke consiers sending it to the real backwaters of the world instead. Like Antarctica, or South Australia.
[13:42:29] --- Stuff is now known as Africa
[13:43:03] --- Africa is now known as CrusaderNoRegret
[13:47:57] --- CrusaderNoRegret is now known as Cashman
[13:49:52] <-- Cashman has left #pentagram ()
[13:50:10] --> Cashman has joined #pentagram
[13:51:32] <-- Cashman has left #pentagram ()
[13:51:43] --> Cashman has joined #pentagram
[13:53:42] --- Cashman is now known as hello
[13:53:54] <-- hello has left #pentagram ()
[13:53:54] --> hello has joined #pentagram
[13:54:56] --- hello is now known as Cashman
[13:57:14] <-- Cashman has left IRC ()
[14:00:48] --> Cashman has joined #pentagram
[14:02:51] <Cashman> hmm sleep
[14:02:55] <Cashman> l8erz
[14:02:55] <-- Cashman has left IRC (Client Quit)
[14:08:31] <-- Colourless has left IRC ("restarting")
[14:12:37] --> Colourless has joined #Pentagram
[14:12:39] --- ChanServ gives channel operator status to Colourless
[14:41:52] <wjp|work> let's see... loopscripts...
[14:42:12] <Darke> Oooooh... have fun! Night! *grin*
[14:42:17] --- Darke is now known as DarkeZzz
[14:42:31] <Colourless> loopscripts, are pretty simple :-)
[14:42:41] <wjp|work> indeed :-)
[14:42:49] <wjp|work> I have 18 minutes left before I go home
[14:43:00] <Colourless> i don't think 18 minutes is enough time :-)
[14:43:11] <wjp|work> we'll see :-)
[14:45:48] <Colourless> remember the silly loop script opcodes are pushed as bytes :-)
[14:45:54] <wjp|work> yeah
[14:45:59] <Colourless> not a words
[14:46:05] <Colourless> s/a/as/
[14:46:29] <wjp|work> (turned out I accidently pushed 1 byte globals as 1 byte earlier...)
[14:46:41] <wjp|work> (that really screwed things up :-) )
[14:47:00] <Colourless> it used a simple stack based interpreter. In theory you should be able just use the usecode process stack to work from
[14:51:16] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[14:56:47] <wjp|work> ugh, work got in the way
[14:56:59] <wjp|work> I guess the remaining 4 minutes definitely won't be enough :-)
[15:04:51] <wjp|work> I'll continue at home; bbl :-)
[15:04:53] <-- wjp|work has left IRC ("going home")
[15:28:36] --> wjp has joined #pentagram
[15:28:36] --- ChanServ gives channel operator status to wjp
[15:35:24] <wjp> hm, we don't have a 'status' field for Items, do we?
[15:35:32] <Colourless> yes we doo
[15:35:36] <Colourless> it's 'flags'
[15:35:51] <Colourless> i've written somewhere status flags...
[15:36:32] <Colourless> yes. enum statusflags in item.cpp
[15:37:12] <wjp> ah, indeed
[15:37:23] <wjp> ok, the gump_open flag is indeed in there
[15:37:39] <wjp> I wonder why they have the ability to check for that in loopscripts
[15:37:49] <wjp> it's pretty much useless without a bitwise and
[15:38:16] <wjp> why is flags a uint32 again? :-)
[15:38:27] <wjp> (or rather: any objections to making it a uint16?)
[15:38:40] <Colourless> probably because you made it a uint32 :-)
[15:38:52] <wjp> sounds plausible :-)
[15:39:32] <wjp> I hate how emacs colour-codes 'stack' as a type even when I use it as a variable
[15:40:22] <Colourless> you should be aware that loop scripts do have some 'interesting' properties
[15:40:30] <Colourless> but i can't remember what exactly they were
[15:40:40] <wjp> oh, thanks for mentioning that ;-)
[15:40:51] <Colourless> got to do with item->shape from memory
[15:41:19] <wjp> hm, I didn't notice anything weird
[15:41:42] <Colourless> it's not done in u8 iirc, only in tgwds
[15:42:31] <wjp> hm, haven't looked at loopscripts in that yet
[15:42:40] <Colourless> if i'm not mistaken '@' is 'a'-1
[15:42:52] <Colourless> s/'a'/'A'/
[15:43:33] <Colourless> it was then possible to use characters from 'A' to 'Z' for specifying a shape (somehow i don't remember exactly what it did)
[15:44:00] <Colourless> and additionally you could do the same for framee with 'a' to 'z'
[15:44:17] <wjp> @ = 0x40, A = 0x41, yes
[15:44:42] <wjp> hm, sounds weird
[15:48:46] <Colourless> we need a better method to search the logs
[15:48:54] <Colourless> i know i discussed it with darke
[15:48:59] <Colourless> when i just don't know
[15:51:53] * Colourless thinks about october sometime
[15:53:24] <wjp> 14 oct has some loopscript stuff
[15:53:53] <wjp> but not about this
[16:02:57] <wjp> hm, didn't find the logs, but I did find an example in Crusader's usecode
[16:03:30] <wjp> 0014: 74 loopscr 24 "$" - end
[16:03:30] <wjp> 0016: 0B push 05DDh
[16:03:30] <wjp> 0019: 0B push 05DEh
[16:03:30] <wjp> 001C: 0B push 05D9h
[16:03:30] <wjp> 001F: 0B push 05DAh
[16:03:31] <wjp> 0022: 74 loopscr 44 "D" -
[16:03:50] <Colourless> yeah thats the sort of thing
[16:04:04] <wjp> it seems that for every 'loopscr "D"' there are four ints before that
[16:04:17] <wjp> two ints in front of a B here
[16:04:20] <wjp> five in front of an E
[16:04:28] <wjp> I think the pattern is clear :-)
[16:04:32] <Colourless> i think i remember now that what it did was compare the shape to the 4 words following it
[16:04:46] <wjp> makes sense
[16:06:24] <wjp> yikes, it goes all the way up to L
[16:08:52] <wjp> can't find something like this for framenum, though
[16:10:21] <wjp> it does seem weird that framenum is exactly 'a'-1, though
[16:14:35] <Colourless> it wouldn't hurt to implement the same for framenums even if it's not usedf
[16:14:58] <wjp> agreed
[16:31:14] <wjp> hm, looks like our 1-year-aniversary is in 5 days
[16:31:19] <wjp> (of SF project registration, that is)
[16:31:30] <Colourless> heh, only 1 year :-)
[16:31:32] <wjp> time flies :-)
[16:31:52] <Colourless> feels like we've been doing nothing for much longer than that :-)
[16:32:02] <wjp> :-)
[16:32:15] <wjp> well, we did borrow exult's CVS for a while
[16:32:48] <Colourless> true
[16:33:49] <wjp> hm, any idea what I meant with the 'zz = type' in '70 xx yy zz' (container loop) opcode? :-)
[16:34:59] <Colourless> where what?
[16:35:24] <wjp> the 0x70 opcode takes three bytes as parameters
[16:35:32] <wjp> I labelled the third one with 'type'
[16:35:39] <wjp> can't remember what I meant by that :-)
[16:35:45] <Colourless> yes, that's the type of search to perform
[16:35:47] <wjp> (or maybe you or Darke put that comment there)
[16:36:29] <wjp> breadth-first/depth-first/non-recursive or something?
[16:39:33] <wjp> hm, in the abacus code (search for obsidian) type = 5
[16:39:43] <wjp> so that would be a recursive search in a container
[16:39:58] <wjp> an equiped item is pushed first (probably the avatar's backpack)
[16:40:32] <wjp> hm, seems there also also loops that don't take items as parameters
[16:40:59] <Colourless> that sounds about right
[16:44:02] <wjp> hm, there's an empty loopscript here. I guess it may have to default to 'true'
[16:44:15] <Colourless> where? are you sure?
[16:45:05] <wjp> U8, 483:00F0
[16:45:34] <wjp> several in that area
[16:47:53] <wjp> types 2, 3, 4, 5, 6 occur in U8
[16:48:05] <wjp> types 2, 4, 6 occur in No Regret
[16:48:15] <Colourless> hmm, i guess they need to be put into context
[16:48:17] <wjp> same in No Remorse
[16:53:32] <wjp> uh oh
[16:53:42] <wjp> BACKPACK::use() has nested loops
[16:55:07] <Colourless> you sure?
[16:55:29] <wjp> loop ... loop ... loopnext ... loopnext
[16:55:34] <Colourless> most odd... my usecode file has 2 BACKPACK::use functions :-)
[16:55:36] <wjp> unless they do really weird stuff with jumps...
[16:55:50] <wjp> hm, so does mine
[16:56:53] <wjp> 103 seems to be the real one
[16:57:01] <Colourless> yeah
[16:57:09] <Colourless> AC seem... strange
[16:57:23] <wjp> it doesn't appear in the event table
[16:57:45] <Colourless> it's a routine, not a process
[16:57:55] <wjp> yeah
[16:57:59] <wjp> that too :-)
[16:58:14] <wjp> called by 103
[16:59:08] <Colourless> seems to do something resursive with closing gumps
[16:59:39] <Colourless> my guess, it goes through every item in the back pack and closes it's gumps
[16:59:45] <wjp> hm, not sure
[16:59:55] <wjp> that FREE:2767 is doing scary stuff
[17:00:04] <wjp> might be combining items
[17:00:52] <Colourless> Item::destroy ??
[17:01:19] <wjp> that is one of the things that would happen if you combine items
[17:01:43] <Colourless> i guess it doens't really matter as long as we do everything correctly
[17:01:49] <wjp> there's getQuantity's for two items
[17:01:56] <wjp> then a setQuality for one of them
[17:02:03] <wjp> and a destroy for the other
[17:02:18] <wjp> s/setQuality/setQuantity/
[17:02:19] <Colourless> now i shouldnt think that recursive loopscripts would cause much of a problem
[17:03:14] <wjp> well, we do need to store loop info somewhere
[17:03:51] <wjp> a worse problem might be manipulating items while looping
[17:04:08] <Colourless> that would always be problem regardless
[17:05:04] <wjp> yeah, I didn't mean in conjunction with nesting
[17:05:16] <wjp> it just occurred to me when because of that Item::destroy
[17:05:23] <wjp> s/when//
[17:05:27] <Colourless> one would assume they didn't do anything overly silly
[17:05:53] <wjp> we had a bug in Exult because of this recently IIRC
[17:06:04] <wjp> they were deleting items from the list they were looping over
[17:07:28] <Colourless> well if we do a number of 'checks' it should be a problem
[17:07:59] <Colourless> s/should/shouldn't/
[17:08:59] <Colourless> such as don't loop to an item that has been deleted
[17:09:56] <wjp> that would make sense :-)
[17:10:06] <wjp> how would you do these item loops?
[17:10:15] <wjp> gather all items at the start or not?
[17:10:23] <Colourless> you could do that
[17:10:41] <wjp> we'd have to store a list somewhere though
[17:11:14] <Colourless> i just thought of something annoying
[17:11:37] <Colourless> if the code jumps out of the loopscript, we won't know it's been left
[17:11:50] * wjp nods; that's the problem with nested loops
[17:12:02] <wjp> I've rambled about it a bit with the 'normal' loop opcode
[17:12:06] <wjp> (in UCMachine.cpp)
[17:12:23] * wjp looks
[17:12:27] <wjp> hm, ok, not 'a bit'
[17:12:43] <wjp> I rambled about it for 40 lines :-)
[17:12:44] <Colourless> but do they ever do that?
[17:13:02] <wjp> I'd have to write a small script to check or something
[17:13:39] <Colourless> this is the inner loop of that backpack func
[17:13:40] <Colourless> 00E5: 70 loop [BP-06h] 06 04
[17:13:41] <Colourless> 00E9: 51 jne 000Dh (to 00F9)
[17:13:41] <Colourless> 00EC: 3F push [BP-06h]
[17:13:41] <Colourless> 00EE: 11 call 0581:2767 (unknown)
[17:13:41] <Colourless> 00F3: 6E add sp -02h
[17:13:42] <Colourless> 00F5: 73 loopnext
[17:14:01] <wjp> yuck
[17:14:04] <wjp> it jumps out of it
[17:14:14] <Colourless> it jumps out ONCE there is no items left
[17:14:29] <Colourless> the jne is popping a value pushed by the loop opcode
[17:14:38] <wjp> oh, right
[17:14:47] <wjp> hm, spaghetti
[17:14:56] <wjp> the opcode after the loopnext jumps back to inside :-)
[17:15:15] <wjp> (to the jne)
[17:15:55] <wjp> hm, what's with the huge sp changes there?
[17:16:13] <Colourless> no, hang on, i don't know what the loop opcode is pushing
[17:16:58] <Colourless> ah now i understand what's going on
[17:17:13] <Colourless> the loop is actually this:
[17:17:14] <Colourless> 00EC: 3F push [BP-06h]
[17:17:14] <Colourless> 00EE: 11 call 0581:2767 (unknown)
[17:17:14] <Colourless> 00F3: 6E add sp -02h
[17:17:14] <Colourless> 00F5: 73 loopnext
[17:17:14] <Colourless> 00F6: 52 jmp FFF0h (to 00E9)
[17:17:33] <Colourless> eh, lets try that again (missed a line)
[17:17:34] <Colourless> 00E9: 51 jne 000Dh (to 00F9)
[17:17:34] <Colourless> 00EC: 3F push [BP-06h]
[17:17:34] <Colourless> 00EE: 11 call 0581:2767 (unknown)
[17:17:34] <Colourless> 00F3: 6E add sp -02h
[17:17:34] <Colourless> 00F5: 73 loopnext
[17:17:36] <Colourless> 00F6: 52 jmp FFF0h (to 00E9)
[17:18:32] * wjp nods
[17:18:38] <wjp> but what about the first iteration?
[17:18:51] <Colourless> loopnext gets the next iterated item, the code then jump back upto the jne
[17:19:18] <Colourless> if there are no more items the jne jump is taken and it jumps to the
[17:19:18] <Colourless> 00F9: 6E add sp -28h
[17:19:31] <Colourless> my guess is they stored quite a bit of data on the stack for the lists
[17:19:40] <Colourless> s/lists/loopscripts/
[17:19:49] <wjp> I guess 'loop' will have to push false when they're out of items
[17:20:04] <wjp> s/they're/it's/
[17:20:14] <Colourless> because directly following that the outer loop then goes to it's next item with
[17:20:17] <Colourless> 00FB: 73 loopnext
[17:20:18] <Colourless> 00FC: 52 jmp FFC2h (to 00C1)
[17:20:37] <wjp> 40 bytes...
[17:20:46] <wjp> and 42 bytes in the outer loop
[17:21:02] <wjp> more than a 'bit' of data :-)
[17:21:27] <Colourless> need to substract the size of the script bytes itself
[17:21:38] <wjp> yeah, but that's only 6
[17:22:10] <Colourless> that leaves 34 for inner
[17:22:48] <Colourless> and 36 for outer.
[17:23:00] <Colourless> should note that outer is type 5 while inner is type 4
[17:23:20] <wjp> (aside: there seems to be no 'add sp' after 'normal' loops)
[17:23:26] <wjp> that might indeed matter
[17:24:08] <wjp> bbl, dinner
[17:27:20] <Colourless> i think that we'd find that they never jump out of the loops
[17:27:35] <Colourless> doing so would have caused them a world of pain too
[17:37:08] <wjp> with those sp adjustments you can be pretty sure of that, I guess
[17:37:54] <Colourless> with just huge stack pointer adjustments, i guess we can use that space as some data storage :-)
[17:41:32] <wjp> I guess we can :-)
[17:41:35] <wjp> which is good
[17:42:17] <Colourless> and once we hit the final object we can free whatever data we may have allocated
[17:42:56] <Colourless> question though is what is the correct way to do things
[17:43:48] <Colourless> create the entire list of objects when the loop opcode is called, or not
[17:45:11] <Colourless> creating list first would be the safest option..
[17:45:29] <Colourless> however if new items are added they wont get iterated
[17:46:00] <Colourless> of course if the game modifies what it's iterating then problems are likely going to come up regardless of the method
[17:46:15] <wjp> but we'll have to get the same problems :-)
[17:51:23] <Colourless> Free::2767 only gets called 3 times in total in u8
[17:52:16] <Colourless> of course 2 of those instances are withing other 'Free' functions
[17:53:52] <Colourless> hmm, that function 2767 look positively evil
[17:54:08] <Colourless> i have no idea what it's trying to do
[17:54:44] <wjp> I still think it combines items
[17:54:55] <Colourless> it has it's own loopscript in there
[17:55:11] <wjp> it compares frames, checks for the right family
[17:56:09] <wjp> it loops looking for items with the same shape as [BP-04]?
[17:56:25] <wjp> heh, silly
[17:56:46] <wjp> or maybe not
[17:57:44] <wjp> it checks if the first item is SF_QUANTITY or SF_REAGENT
[17:58:02] <Colourless> reagent of money really :-)
[17:58:06] <Colourless> s/of/or/
[17:58:34] <wjp> is money the only SF_QUANTITY item?
[17:58:58] <Colourless> i can't think of anything else that stacks
[17:59:04] <wjp> me neither
[17:59:30] <wjp> for the second item it seems to require family = SF_QUANTITY
[18:00:01] <wjp> no... it either family = SF_QUANTITY or the frames are equal
[18:00:04] <wjp> s/it//
[18:00:14] <Colourless> i wonder how charged sorcery foci work
[18:00:24] <wjp> ah, of course, money had different frames
[18:00:54] <wjp> it then creates a list of all items that match
[18:02:00] <wjp> (so items that have the same shape and (family = SF_QUANTITY or (frames match)) and aren't the same item
[18:02:02] <wjp> )
[18:02:38] <wjp> this list is [BP-08h], btw
[18:02:53] * Colourless is looking in other places at other things
[18:03:07] <wjp> I'm mainly making notes for myself :-)
[18:04:45] <wjp> umm... push [BP-0Eh]; push [BP-0Eh]; sub; pop [BP-0Eh];
[18:04:59] <wjp> is it me or is that a complicated way of making [BP-0Eh] zero?
[18:05:33] <Colourless> someone thinking of the xor trick but messed it up? :-)
[18:05:44] <wjp> :-)
[18:06:09] <wjp> ok, it's roughly making sense
[18:06:23] <wjp> it then does a manual loop (not using the loop opcodes) over that list
[18:06:41] <wjp> and adds the quantity of each item to the first item in turn
[18:06:49] <wjp> and then destroys the added item
[18:07:27] <Colourless> you know what, they were concious of not killing items in the list :-)
[18:07:38] <wjp> indeed :-)
[18:07:54] <Colourless> of course only partially though
[18:08:13] <Colourless> the killing is still being done within a loop, within a loop :-)
[18:10:16] <wjp> at least the current item in the loop inside the loop isn't being killed :-)
[18:10:16] <Colourless> no it isn't
[18:11:15] <wjp> a recursive item loop without getting all items in advanced would be tricky
[18:11:23] <wjp> s/advanced/advance/
[18:12:37] <Colourless> heh nice, they had a Item::destroyContents() intrinsic
[18:12:51] <wjp> intrinsic? heh
[18:13:20] <Colourless> it's 0x3c
[18:13:28] <wjp> guess they didn't want to attempt it in usecode :-)
[18:22:58] <wjp> *sigh*... all this is going to be annoying :-)
[18:23:23] <wjp> ah well, the majority will probably work whatever we do
[18:23:36] <wjp> (within reason, of course ;-) )
[18:23:47] <Colourless> well, i just went though the entire usecode and marked all of the u8 instrinsics that are processes
[18:24:04] <Colourless> i should have gotten them all
[18:24:50] <wjp> cool
[18:25:14] <wjp> could you make them a UCMachine::dummyProcess in u8intrinsics.h?
[18:25:16] <wjp> :-)
[18:25:24] <wjp> (or commit the list somewhere and I'll do it)
[18:25:45] <Colourless> yeah i should be able to do that :-)
[18:25:59] <Colourless> i wont be committing tonight though :-)
[18:26:20] <wjp> I assume the ones that had a 'process' in ConvertUsecodeU8.h are processes?
[18:26:31] <Colourless> yes they are
[18:26:40] <wjp> (but that was only about 4 or 5)
[18:27:07] <Colourless> if you look at the list you can see that one day i started to fill out the details of the functions... then i stopped
[18:27:35] <Colourless> there really aren't that many process intrinsics
[18:27:42] <wjp> btw, why is a static defined in a .h file?
[18:27:50] <wjp> (in ConvertUsecodeU8.h)
[18:28:21] <Colourless> where ?
[18:28:35] <wjp> well, static const char* const _intrinsics[];
[18:28:56] <wjp> the actual intrinsic list is right below it
[18:29:06] <wjp> shouldn't it be in a .cpp?
[18:29:25] <Colourless> ah, yes
[18:37:08] <Colourless> i think we need a dummy getName() func
[18:38:28] <Colourless> just something that returns "Avatar" or something
[18:39:24] <wjp> yeah, I guess I can quickly add that
[18:40:07] <Colourless> need to check to see what sort of string it wants though
[18:40:49] <wjp> something that is accepted by concat
[18:40:51] <Colourless> it wants a 16 bit string
[18:40:56] <wjp> yes
[18:41:20] <wjp> easy enough
[18:41:29] <wjp> return assignString("Avatar"); or something :-)
[18:41:53] <wjp> 0xBC right?
[18:42:06] <Colourless> yes
[18:43:11] <Colourless> what is your name? 1) Avatar 2) The Avatar
[18:43:17] <wjp> :-)
[18:46:23] <wjp> committed
[18:46:58] <Colourless> you know, i guess it's a good think that pentagram doesn't crash when it gets a 0 passed to concat
[18:49:16] <Colourless> it works :-)
[18:51:43] <wjp> oh, it does crash
[18:52:13] <wjp> (if the right one is zero)
[18:52:28] <wjp> or actually...
[18:52:40] <wjp> I think something is setting stringHeap[0] to the empty string
[18:52:59] <wjp> side-effect of accessing it with [] I guess
[18:54:07] <wjp> I've changes some of the list opcodes to accept invalid lists
[18:54:26] <wjp> s/changes/changed/
[18:56:12] <Colourless> damn, doesn't let you talk to any of the npcs on the dock before the execution scene has played
[18:57:42] <wjp> hm, hacked in camera moving?
[18:58:04] <Colourless> no, i just added a constant that moved the camera to the docs :-)
[18:58:11] <wjp> oh :-)
[18:58:26] <Colourless> i also increase the screen res
[19:05:49] <Colourless> i really should be goin
[19:05:50] <Colourless> g
[19:06:01] <wjp> g'night
[19:06:03] <Colourless> cya
[19:06:08] <-- Colourless has left IRC ("casts invisibility")
[21:45:44] <-- wjp has left IRC ("Zzzz...")