#exult@irc.freenode.net logs for 24 Jun 2001 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage


[01:01:29] --> Kirben has joined #exult
[01:55:21] --> matt0 has joined #exult
[01:56:08] --> madmagi has joined #exult
[02:01:25] <matt0> madmagi!!!!!!!!!!!!!!!
[02:09:25] <madmagi> yes
[02:24:00] <madmagi> does anyone know if there is a FAQ for the Linux RPM
[02:24:25] <matt0> I don't, sorry
[02:24:46] <madmagi> I cannot get it working on Linux, windows ok
[02:46:34] <-- madmagi has left IRC (Client Exiting)
[06:17:02] <-- matt0 has left IRC (Laserdisc Arcade Emulation Project: http://daphne.rulecity.com , get your CVS password today! =])
[07:08:49] --> mrod has joined #exult
[07:09:02] <mrod> hello
[07:10:12] * mrod grabs the latest cvs snapshot
[07:27:43] <-- mrod has left IRC (Ping timeout for mrod[ppp-222-91.14-151.iol.it])
[07:28:46] --> mrod has joined #exult
[07:43:09] <-- mrod has left #exult
[08:01:28] <-- Kirben has left IRC (Ping timeout for Kirben[co3007967-a.brasd1.vic.optushome.com.au])
[08:03:36] --> Kirben has joined #exult
[09:39:52] --> matt0 has joined #exult
[10:04:10] --> Kirben2 has joined #exult
[10:04:15] <-- Kirben has left IRC (Read error to Kirben[co3007967-a.brasd1.vic.optushome.com.au]: Connection reset by peer)
[11:01:18] <-- Kirben2 has left #exult
[11:01:27] --> Kirben has joined #exult
[11:35:00] --> mrod has joined #exult
[11:43:08] <-- Kirben has left IRC (Ping timeout for Kirben[co3007967-a.brasd1.vic.optushome.com.au])
[11:48:47] --> Kirben has joined #exult
[12:00:00] --> Colourless has joined #Exult
[12:00:22] <Colourless> hi
[12:04:08] <mrod> hello
[12:07:56] <-- Colourless has left IRC (Ping timeout for Colourless[150.101.144.67])
[12:12:55] --> Colourless has joined #Exult
[12:26:24] <-- matt0 has left IRC (Laserdisc Arcade Emulation Project: http://daphne.rulecity.com , get your CVS password today! =])
[12:39:54] <Kirben> Does Exult set the wavetable volume low on startup ? the midi playback in Exult seems super quiet lately on this ystem
[12:40:36] <Colourless> no. exult does no such thing
[12:41:09] <Colourless> you should probably make sure that the midi volume curve setting is not less than 1.
[12:41:32] <Kirben> It is 1.000000
[12:42:29] <Colourless> it should be right then.
[12:52:33] --> wjp has joined #exult
[12:52:37] <wjp> hi
[12:53:14] <Colourless> hi
[12:57:38] <wjp> I've been taking a peek at the SS keyring
[12:57:50] <Colourless> how does it work?
[12:57:57] <wjp> it uses two intrinsics 0xc2 (IsOnKeyring?) and 0xc3 (AddToKeyring)
[12:58:06] <wjp> both only take a quality as parameter
[12:58:33] <wjp> which means the data is stored independant of the keyring object
[12:59:05] <Colourless> keyring is a container like jawbone?
[12:59:10] <Colourless> just no gump?
[12:59:14] <wjp> no, doesn't look like it
[12:59:37] <Colourless> would work though no?
[13:00:07] <wjp> yeah, it might
[13:00:32] <wjp> the intrinsics would have to be able to find the keyring, though
[13:01:06] <Colourless> USECODE_INTRINSIC(find_in_owner)
[13:01:26] <wjp> but that would assume it's on the avatar
[13:01:38] <Colourless> // Find_in_owner(container(-357=party), shapenum, qual?? (-359=any),
[13:01:39] <Colourless> // frame??(-359=any)).
[13:01:51] <wjp> ok, on the party :-)
[13:01:58] <Colourless> :)
[13:02:29] <mrod> hello
[13:02:43] <wjp> hi
[13:02:43] <Colourless> only problem would be savegames would become broken. The keyring at the moment would probably be created as a normal Game_object
[13:02:52] <wjp> yeah
[13:03:06] <wjp> I wonder how/where the original stores it
[13:03:08] <Colourless> you could just shove all the keys into the usecode container
[13:03:22] * Colourless doesn't know if that's a good idea though
[13:03:25] <wjp> heh, interesting thought
[13:04:27] <wjp> do the functions that use the usecode container check for item type?
[13:05:27] <Colourless> the get_cont_items intrinsic is normally used by usecode to access the uc container
[13:05:27] <wjp> (ie. is it safe to add random objects?)
[13:06:13] <Colourless> i'll see if I can find the function that access it
[13:06:47] <wjp> brb
[13:06:54] <Colourless> ok
[13:10:33] <wjp> b
[13:10:48] <Colourless> wb ;)
[13:10:55] <wjp> thanks :-)
[13:12:53] <Colourless> ok, looks like the UC container usecode function (09a0) only ever looks for path egg objects (607)
[13:13:28] <wjp> so, we could safely add keys to it
[13:14:23] <Colourless> i would imagine so... but in the original SI, couldn't you just drag a key onto the Key ring to add it?
[13:14:40] <wjp> hmm, don't remember
[13:15:03] <wjp> but then the using intrinsics for this would be a bit weird
[13:15:06] <wjp> s/the//
[13:15:26] <wjp> not to mention the fact that the intrinsics don't take the keyring object as a parameter
[13:16:25] * Colourless is trying to think how it worked.
[13:18:45] <Colourless> I really can't remember.
[13:18:56] <wjp> how what worked?
[13:19:09] <Colourless> how the key ring worked
[13:19:25] <wjp> oh, in the original you mean?
[13:19:28] <Colourless> yeah
[13:19:40] <Colourless> what is the usecode function for keys like?
[13:20:08] <wjp> the 'add to keyring' or 'unlock' part?
[13:20:57] <Colourless> add to keyring
[13:21:54] <wjp> let's see...
[13:22:15] <wjp> * check if item clicked on is keyring
[13:22:23] <wjp> * get keyring's quality (??)
[13:22:38] <wjp> * get own quality
[13:22:49] <wjp> (this might be checking if it can 'unlock' the keyring, btw)
[13:22:56] <wjp> * get own shape
[13:23:01] <wjp> * get own frame
[13:23:08] <wjp> * get own quality (again)
[13:23:16] <wjp> * call add_to_keyring(quality)
[13:23:22] <wjp> * get own quantity
[13:23:26] <wjp> * remove_item(self)
[13:23:42] <Colourless> so it removes it self
[13:23:49] <wjp> using the keyring on a door:
[13:24:13] <wjp> * get door's shape
[13:24:18] <wjp> * get door's quality
[13:24:30] <wjp> * call is_on_keyring(quality)
[13:24:38] <wjp> etc...
[13:26:36] <Colourless> since the key removes itself, I would say that it's easiest if we just used a set or something and just save and reload it to/from a new file (keyring.dat)
[13:29:47] <wjp> yeah, we could do that
[13:38:27] <wjp> where would we internally store that set? we could make a 'keyring_object' which has it has a static or something?
[13:39:04] <Colourless> i'd just put it in the usecode machine
[13:39:44] <wjp> having a keyring_object would also allow us to implement dropping keys onto it, btw
[13:39:52] <wjp> but usecode_machine might be best
[13:40:07] <Colourless> yeah, that's probably a better idea
[13:48:15] * wjp thinks about it some more
[13:59:59] <mrod> how comes that there's no key repeat in exult (don't know for win32 version) ?
[14:00:47] <Colourless> because we haven't programmed that in
[14:05:11] <-- Kirben has left IRC (System Meltdown)
[14:17:36] <mrod> the game freezes when buying a bag from the provisioner. i have two bags in avatar's backpack already. i've tried this two times
[14:17:50] <mrod> is this because of container creation too ?
[14:18:04] <Colourless> what build of exult?
[14:18:10] <mrod> latest
[14:18:34] <Colourless> hmmm. that sort of thing shouldn't crash. File a bug report on sourceforge
[14:18:39] <mrod> (24.06)
[14:18:47] <mrod> ok
[14:18:52] <wjp> hmm, works for me
[14:19:05] <mrod> wjp: also with two bags in backpack ?
[14:19:35] <wjp> yeah, seems to work
[14:20:00] <wjp> how many party members do you have?
[14:20:05] <mrod> 8
[14:20:49] <wjp> hmm... better file a bug report then
[14:21:04] <Colourless> include a save game
[14:21:30] <mrod> ok i will
[14:21:31] <wjp> I get a couple of "Danger! Danger! Object list modified while being iterated." errors
[14:21:55] <wjp> that could very well cause infinite loops in some circumstances
[14:22:06] <mrod> (now i've tried putting out one of the 2 bags and it did work ok)
[14:38:28] <wjp> 2001-06-24 Willem Jan Palenstijn <palenstijn@wanadoo.nl>
[14:38:32] <wjp> * actors.cc: Fixed a minor bug with two handed/two fingered items.
[14:38:39] <Colourless> opps :)
[14:38:45] <Colourless> change that name to me can you?
[14:38:46] * wjp fixes that :-)
[14:39:42] * wjp commits another SS fix
[14:40:09] <wjp> removing the force fields by 'sacrificing' the lightning whip now works
[14:48:48] * mrod wonders what the heck happened to the upload process :-((
[14:49:06] <wjp> that seems to happen a lot
[14:49:16] <wjp> have you zipped the savegame, btw?
[14:49:17] <mrod> the bugreport shows up, while the upload process isn't finished yet. but i did attach the file !
[14:49:21] <mrod> yes
[14:49:32] <mrod> (tar.gz)
[14:49:37] <wjp> did you check the "I want to upload a file" box?
[14:49:49] <mrod> yes
[14:50:30] <mrod> the upload did actually start
[14:51:18] <mrod> but it seems to be endless, since the ppp0 interface monitor shows no traffic in upstream
[14:51:51] <mrod> it did show some transfer, at the beginning
[14:52:38] <wjp> did it show any error messages (in red) at the top of the page that appeared?
[14:53:05] * Colourless thinks that someone should make a savegame info reporter program to allow for easy identification of savegames
[14:54:15] <mrod> wjp: do you mean, in the "Submit new" bugreport page ?
[14:54:49] <wjp> brb, phone
[14:55:05] <mrod> i did not get a page in response to the submission process, yet (and i guess i'll never get it, and it will end in a timeout)
[15:01:13] <mrod> i know it's not the nicer way, but if anyone wants to get the savegame by dcc, and attach it to the report ... (since i submitted it as nobody, i can't modify the entry, but i guess any admin can do it)
[15:01:57] <mrod> (uhm, i meant `nicest')
[15:02:23] <Colourless> you could reply to the bug report and add the savegame by doing that
[15:04:03] <mrod> but, should the process fail again ? i actually don't know why the thing went wrong, so i could need more than another try ... that would make a mess
[15:04:19] <mrod> i'm using opera, and i have cookies enabled
[15:05:50] <mrod> i'll try to see if i find any option to set up in opera's prefs
[15:08:51] <wjp> back
[15:10:44] <mrod> i'll be back later, see you
[15:10:50] <wjp> bye
[15:10:50] <Colourless> ok
[15:10:52] <Colourless> cya
[15:10:54] <-- mrod has left #exult
[15:49:15] --> InuYasha has joined #exult
[15:50:00] <wjp> hi
[16:02:48] <wjp> ok, keyring code is in
[16:12:13] --> mrod has joined #exult
[16:12:26] <mrod> ok, it seems to have worked this time
[16:14:13] <wjp> yay! keyring works!
[16:14:29] <wjp> mrod: yup, I can get the savegame, thanks
[16:14:58] <mrod> :-)
[16:17:05] <wjp> exult30bg.sav... you seem to be enjoying the unlimited savegames :-)
[16:17:26] <mrod> is the `quit to menu' implemented ? it just quits here
[16:17:38] <mrod> wjp: yes i do very much :-)
[16:17:46] <Colourless> not yet
[16:17:51] <wjp> mrod: no, we're waiting for someone to volunteer :-)
[16:18:14] <wjp> ok, good, I get the endless loop too
[16:18:49] <wjp> and the "object list modified while being iterated"
[16:18:52] <wjp> error
[16:30:38] <wjp> ...committing keyring...
[16:31:35] <Colourless> what did you do?
[16:31:58] <wjp> I created a 'Keyring' class and made a member variable Keyring *keyring in Usecode_machine
[16:32:23] <wjp> (with Keyring::read(), write() being called by Usecode_machine::read(), write(), etc...)
[16:33:13] <Colourless> did you modify gamedat.cc to add the keyring data file to the .sav files?
[16:33:28] <wjp> oh, that doesn't happen automatically?
[16:33:30] <wjp> oops :-)
[16:33:38] <wjp> thanks :-)
[16:34:03] <Colourless> there is a list or array somewhere in there that states the files to archive.
[16:34:26] <wjp> I'll search for 'GSAVEINFO'
[16:34:37] <wjp> ok, found the array
[16:34:48] <wjp> I also added it to the list of files to be removed when restoring gamedat
[16:35:19] <Colourless> yeah. that would be very important or else you'll start a new game and you'll have all the keys from the prev :)
[16:35:55] <wjp> no wonder it worked when I tried it :-)
[16:36:56] * wjp saves, manually removes keyring.dat, quits and reloads
[16:37:27] <wjp> ok, works
[16:38:26] * wjp commits that too
[16:49:18] <Colourless> so, does 'k' key use the keyring as well?
[16:49:23] <wjp> yup
[16:49:37] <wjp> and I've 'backed up' the try_keys to alt-k in SI
[16:49:48] <Colourless> ah ok
[16:50:54] <wjp> hmm... interesting bug:
[16:51:11] <wjp> there's a bunch of eggs here that are supposed to throw up energy fields when you get near
[16:51:26] <wjp> however, they do this _every_ time you get near, even if there's already an energy field there
[16:51:51] <wjp> so, after walking past them a dozen times, there's so many energy fields there, they're not even transparent anymore
[16:51:58] <Colourless> hehe
[16:53:16] <wjp> probably another swapout issue
[16:53:58] <Colourless> yeah perhaps.
[16:54:06] <Colourless> swapout doesn't effect objects
[16:54:13] <Colourless> it did in the original
[16:56:23] <wjp> maybe we should swapout fields too
[16:56:59] <Colourless> try it, and it will fail badly :)
[16:57:05] <wjp> it will?
[16:58:03] <wjp> changing that behaviour does have a history of failing badly, I guess :-)
[16:58:18] <Colourless> yeah. there is one slight problem... it will effect ALL field, it must just effect fields created by usecode
[16:58:38] <mrod> are the guards supposed to enter shops in their schedule ? i don't remember this particular in the original game
[16:59:04] <wjp> Colourless: yeah, good point
[16:59:14] <Colourless> exult has no way of differentiating between objects from the start of the game and objects created within the game
[16:59:41] <wjp> I'm still kind of hoping it could be that flag 0x12 :-)
[16:59:51] <wjp> (if you read my little chat to myself last night :-) )
[17:00:10] <Colourless> 0x12?
[17:00:20] <wjp> we labeled it as okay_to_move
[17:00:31] <wjp> but it _could_ just be 'okay_to_swapout'
[17:00:49] <Colourless> ah could be.
[17:01:00] <Colourless> so does it get set on some things?
[17:01:01] <wjp> clear_flag(0x12) was specifically called after creating the SS npc's
[17:01:14] <wjp> maybe it's supposed to be always set when creating objects in usecode
[17:01:16] <Colourless> cleared.... interesting
[17:01:25] <wjp> yes, very interesting :-)
[17:01:31] <wjp> oh, dinner's ready
[17:01:39] <Colourless> ok
[17:01:51] --- wjp is now known as wjp|dinner
[17:02:20] * Colourless decides to check other usecode functions to see if flag 0x12 is cleared on any other usecode created items
[17:02:36] <Colourless> the start of the game would be a good place to checl
[17:02:40] <Colourless> check even
[17:05:10] * Colourless recompiles first though
[17:24:04] <Colourless> wjp: i just checked, and teleport storm created items get flag 0x12 set to true.
[17:25:41] <Colourless> it looks like that 0x12 is meant to be a is_temporary flag.
[17:26:37] <Colourless> one thing though. We've seen cases where the flag is set (on generic items), and another where it's cleared (on NPCs)
[17:27:08] * wjp|dinner is back
[17:27:11] --- wjp|dinner is now known as wjp
[17:27:14] <Colourless> wb
[17:27:49] <wjp> thx
[17:28:14] <Colourless> i think i'll just clarify something, the teleport storm i'm talking about is NOT the one the occurs at the start, it's just the lightning strikes that occur around SI
[17:28:36] <wjp> k
[17:29:14] <wjp> what happens to items created by the teleport storm at the start?
[17:29:24] <Colourless> at the start of the game the objects are created with add_cont_items, and don't have flag 0x12 change. These items don't get cached out in the original
[17:29:54] <Colourless> that should be don't get removed when the cache out occurs in the original
[17:30:23] <Colourless> do you have the usecode function where the fields get created?
[17:30:38] <wjp> they're created by those egg-shaped eggs
[17:30:47] <wjp> like monsters
[17:30:53] <Colourless> ah i would have thought as much.
[17:31:11] <wjp> these would probably automatically set the flag, then
[17:31:11] <Colourless> I'm assuming that all egg created objects have 0x12 set
[17:31:20] <wjp> right :-)
[17:31:38] <Colourless> i'm guessing that all usecode created NPCs also have that flag set.
[17:31:39] * wjp checks which intrinsic creates the SS NPCs
[17:32:03] <Colourless> however it appears that usecode created items may not
[17:32:19] <wjp> maybe there's a difference between the various item creating intrinsics too
[17:32:29] <Colourless> maybe
[17:33:02] <Colourless> whatever, this flag quite possible is the answer to one of the questions that's been bugging me for some time, how the hell did the original differentiate between temp and perm items
[17:34:02] <wjp> SS npc's are created with 'create_new_object'
[17:34:25] <Colourless> intrinsic number?
[17:34:56] <wjp> 0x2d
[17:35:05] <Colourless> i've got this one from lightninh creating an anvil
[17:35:05] <Colourless> [0x2c]: create_new_object(03df) = AT
[17:35:05] <Colourless> [0xa4]: set_item_flag(12367d40, 0012) = 0000
[17:35:39] <Colourless> i beleive that 0x2d is only ever used for NPCs
[17:36:04] <Colourless> however, i just expanded create_new_object to handles items and npcs
[17:36:13] <Colourless> that's why it's 2c and 2d
[17:37:11] <wjp> add_cont_items should probably always clear the flag
[17:37:19] <Colourless> yeah
[17:37:31] <wjp> (spellbook, items at start)
[17:37:47] <Colourless> i was thinking the same thing
[17:38:10] <wjp> so that would make 2c create non_temp objects, and 2d temps?
[17:38:25] <Colourless> that's what I'm thinking
[17:38:43] <wjp> and then there's BG...
[17:39:14] <wjp> brb again
[17:39:36] <Colourless> i would assume that it's sole add_cont_items is the same as 2c
[17:40:17] <Colourless> i'm just checking the calls to 2d to see if they are always for NPCs
[17:42:28] <wjp> ...and back again...
[17:43:52] <wjp> 2d is used for a fish here
[17:44:23] <Colourless> that's the fish npc shape
[17:44:41] <wjp> mummy, guard, undead...
[17:44:47] <Colourless> cats
[17:45:38] <Colourless> lots and lots of guards
[17:45:53] <wjp> Batlin
[17:46:15] <wjp> lots of cats too :-)
[17:47:11] <Colourless> are you thinking safe to assume 2d is only npcs. I would therefore guess that 2c is only items, because create_new_object in BG never created NPCs
[17:48:04] <wjp> I think it is
[17:48:17] <Colourless> ok then. that makes it easy :)
[17:48:29] <wjp> assert it if necessary
[17:49:19] <Colourless> so, who is going to impliment this?
[17:49:48] <wjp> it should probably wait till after the release
[17:50:11] <Colourless> yeah, that is probably a good idea.
[17:50:27] <Colourless> i was almost ready to do it right now.
[17:50:53] <wjp> I won't stop you :-)
[17:51:01] <Colourless> :)
[17:51:13] <mrod> bye for now, i go
[17:51:17] <wjp> bye
[17:51:22] <-- mrod has left #exult
[17:51:24] <Colourless> ok then, I'll do it. If something breaks the release, we'll just blame Jeff like last time
[17:51:30] <Colourless> :)
[17:51:30] <wjp> lol
[17:52:29] <wjp> I wonder how possible it would be to create an SQL DB with all shape/object info in it
[17:52:53] <wjp> maybe even with the all objects from a given savegame
[17:53:45] <wjp> select * from usecode_calls u, shapes s where u.param0 = s.shapenum and not s.npc;
[17:53:45] <wjp> ;-)
[17:54:06] <wjp> (oh, and u.id = 0x2d)
[17:55:06] <Colourless> how would you parse the usecode?
[17:55:17] <wjp> not a clue :-)
[17:55:56] <Colourless> perhaps it's an idea for the usecode debugger idea that jeff had for Exult Studio?
[17:56:13] <wjp> didn't Dancer already start a usecode debugger?
[17:56:21] <Colourless> yeah, there's one.
[17:56:39] <Colourless> i have it enabled
[17:57:00] * wjp finished checking all 0x2d calls
[17:57:02] <Colourless> jeff's idea was for exult studio to receive the usecode output
[17:57:16] <wjp> yeah, I read the mail
[17:57:22] <wjp> might be very useful, if done right
[18:00:21] <wjp> all 'immediate' 2d calls are npc's, but there's a few functions where the shape created depends on the parameters passed
[18:00:54] <Colourless> how many?
[18:00:58] <wjp> 3
[18:01:13] <Colourless> that's not many
[18:01:53] <wjp> I'll backtrack a bit
[18:06:06] <wjp> can it get a size-3 array?
[18:07:24] <Colourless> yes
[18:07:29] <Colourless> as param 2
[18:09:02] * wjp is confused
[18:09:14] <Colourless> why?
[18:09:30] <wjp> push [0000]
[18:09:33] <wjp> push [0001]
[18:09:38] <wjp> callis 0x24
[18:09:51] <wjp> then the [0001] is the first param, right?
[18:10:17] <Colourless> i think so
[18:10:40] <wjp> 0001 is either [2476, 110, 0] or -264
[18:10:45] <wjp> I guess the latter
[18:11:18] <wjp> and then the array would be location?
[18:11:39] <Colourless> yeah if the array is speicfied, it's the location, else the location of the calling object is used
[18:12:01] <wjp> and 0x2d can take a negative number?
[18:12:49] <Colourless> no
[18:13:04] <Colourless> well, i've never seen ti
[18:13:06] <Colourless> it
[18:13:47] <wjp> could be I'm just reading it wrong
[18:14:52] <wjp> ah, got it...
[18:15:12] <wjp> it doesn't reach the 2d call if it's not either 318 or 495
[18:15:28] <wjp> (ie. Batlin or cat)
[18:15:59] <Colourless> ah
[18:16:24] <Colourless> that sounds like it's a crystal ball usecode function
[18:16:52] <wjp> hmm, oh, right, cats were used for that :-)
[18:17:15] <Colourless> yep
[18:19:24] <wjp> ok, 2nd function checks out too...
[18:20:42] <wjp> and the last one too
[18:21:23] <Colourless> ok, I think i've done all the required changes. Turns out that the amount of changes were kind of minimal actually.
[18:21:38] <Colourless> 2 lines to egg.cc (1 was a comment)
[18:22:00] <Colourless> modification to 1 line in objs.h and contain.h
[18:22:18] <Colourless> add 2 line to contain.cc
[18:22:27] <Colourless> add 2 lines and modify 1 line in actors.cc
[18:22:32] <Colourless> that's it
[18:23:01] <wjp> and the actual swapping?
[18:23:14] <Colourless> 1 line changed in gamwin.cc
[18:23:27] <wjp> && each->get_flag(18)), I guess
[18:23:31] <Colourless> instead of checking for monster actors, check for flag 0x12 instead
[18:24:02] <Colourless> there was a bug mentioned the other day that the SS npc's disappered... guess why!
[18:24:08] <wjp> I can't wait to see how it works :-)
[18:24:53] <Colourless> the culling algorithm detected them as monster npcs and culled them, when it would appear that i wasn't supposed to due to flag 18
[18:24:54] * wjp guesses it was because of.... *pulls up random excuse*
[18:25:21] <wjp> yeah, that's what I figured last night
[18:26:06] <Colourless> this is so simple, i'm amazed no on thought of it before :)
[18:26:14] <wjp> :-)
[18:27:13] <Colourless> i've noticed that getting SI to work has required almost an exact reproduction of thte engine, unlike BG which worked with quite a few hacks
[18:28:01] * Colourless is getting compiling errors: `okay_to_move' undeclared in namespace `Obj_flags'
[18:28:59] <wjp> ugh...
[18:29:13] <Colourless> so far i've had 1
[18:29:15] <Colourless> in drag.cc
[18:29:45] <wjp> drag.cc is all
[18:37:41] <Colourless> finished compiling
[18:37:50] <Colourless> now, how to test it!
[18:41:28] <wjp> good question :-)
[18:41:30] --> jameson has joined #exult
[18:41:37] <jameson> Hi!
[18:41:42] <wjp> hi!
[18:41:49] <Colourless> hi
[18:54:59] <Colourless> hmmm. the SS npc's didn't get created
[18:55:24] <Colourless> when are they supposed to get created?
[18:58:43] <wjp> after you talk to Karnax
[18:58:58] <Colourless> that's probably why :)
[18:59:01] <wjp> not sure what you need to say, but I guess you need to get the amulet
[18:59:11] <Colourless> i cheated to get the amulet
[18:59:20] <wjp> tsk tsk ;-)
[18:59:38] <jameson> Hmm... What's gamedat/keyring.dat, and how can it be created?
[18:59:44] <wjp> how will all this affect savegames?
[18:59:58] <wjp> jameson: I just implemented this today, you're quick :-)
[19:00:15] <wjp> jameson: SI should automatically create it on save
[19:00:17] <Colourless> it wouldn't effect it much
[19:00:47] <wjp> 'broken' savegames (NPCs already swapped out) will stay broken, of course
[19:00:47] <jameson> BG aborts because it's missing (when saving).
[19:00:55] <wjp> argh...
[19:00:59] <wjp> oops :-)
[19:01:30] <jameson> ;-)
[19:03:01] <jameson> I'm getting segfaults after PCs or NPCs take damage, BTW. gdb segfaults when I use it, and ladebug doesn't even start exult.
[19:03:21] <jameson> Guess I'll have to do it manuall...
[19:03:38] <jameson> Where's the code for that?
[19:03:58] <wjp> depends on what kind of damage it is
[19:04:39] <jameson> Class 'P' weapons, in case it uses AD&D 2nd Ed rules... ;-)
[19:04:56] <jameson> Knife hit in one case, in the other case, I was bitten by a rat.
[19:05:02] <wjp> ok, combat damage
[19:05:07] <jameson> Or maybe it was a mouse- it all just happened too quickly...
[19:05:18] <jameson> The screams, the carnage- it was horrible...
[19:05:29] <wjp> lol
[19:07:08] <wjp> take a look at actors.cc, Actor::attacked
[19:07:20] <jameson> OK, thanks!
[19:07:50] --> mrod has joined #exult
[19:08:08] <mrod> greetings
[19:10:24] <wjp> jameson: ok, I committed the fix for that keyring.dat issue... thanks for letting me know :-)
[19:10:28] <wjp> hi
[19:11:27] <jameson> wjp: NP, and thanks!
[19:11:30] <jameson> mrod: Hi!
[19:13:39] <wjp> Colourless: to continue the 'how will this affect savegames?' thread:
[19:14:01] <wjp> what will happen to savegames created after the NPCs were created, but before they were swapped out?
[19:15:16] <wjp> flag should be cleared properly, right?
[19:15:34] <Colourless> yeah it should
[19:17:11] <mrod> jameson: hello :-)
[19:18:49] <Colourless> finally, the npcs are there now
[19:20:39] * wjp is taking a look at ChangeLog
[19:20:50] <wjp> you know.... we've been covering quite a lot of ground the last couple of days :-)
[19:21:00] <jameson> brb (happens when printing the '%s hits %s for %d' line)
[19:21:04] --- jameson is now known as |creichendinner
[19:21:15] --- |creichendinner is now known as jameson|dinner
[19:33:57] --- jameson|dinner is now known as jameson
[19:34:00] * Colourless was wondering why it wasn't working
[19:34:12] * Colourless noticed he edited code that was commented out
[19:34:25] * Colourless fixed the problem.
[19:34:55] * Colourless blames Jeff for leaving in old code
[19:35:44] <Colourless> yay it seems to work
[19:36:44] --> mrod_ has joined #exult
[19:36:51] <-- mrod has left IRC (leaving)
[19:36:53] --- mrod_ is now known as mrod
[19:40:23] <wjp> Colourless: heh, that happened to me too last night :-)
[19:40:42] <wjp> took me quite a while to figure out why nothing I did seemed to matter :-)
[19:41:40] <Colourless> i added in some code that says whenever an object gets removed because of a swapout. I couldn't for the life of me figure out why objects were being removed, but no message was comming up.
[19:42:02] <Colourless> then i scrolled up a little bit and noticed #if 0
[19:42:11] <wjp> sounds very familiar :-)
[19:42:21] <wjp> (only I used breakpoints instead of messages :-) )
[19:42:28] <Colourless> hehe
[19:42:40] <Colourless> i'm leaving the messages in a debug codes
[19:42:52] <wjp> better throw out that #if 0'ed part
[19:42:59] <Colourless> yeah, I will
[19:43:24] <wjp> how many messages does that produce?
[19:43:51] <Colourless> a few. it just depends on the amount of objects in a chunk
[19:43:56] <Colourless> thet more objects, the more message
[19:44:06] <Colourless> that is the more objects than need removing
[19:44:11] <wjp> makes sense :-)
[19:44:55] <Colourless> the format it simply "Culling Object: name@x,y,lift"
[19:45:08] <wjp> k
[19:45:24] <Colourless> #ifdef debug'd
[19:56:06] <Colourless> where is the place that had the force fields?
[19:57:06] <wjp> abandoned outpost
[19:57:14] * wjp looks up coords
[19:57:36] <wjp> 2482, 2911
[19:57:45] <Colourless> ok, i'm there
[19:58:08] <wjp> the ones around the stairs, behind the gold platform
[19:58:15] <Colourless> hmm, it's creating 2 sets
[19:59:32] <wjp> yeah, for me too the first time I get there
[20:00:21] <wjp> but not if I start from a new game
[20:01:25] <wjp> does it swap them out properly?
[20:01:35] <Colourless> yeah
[20:01:42] <Colourless> i think i know the problem
[20:01:50] <Colourless> there are 2 eggs that can activate the fields
[20:02:00] <wjp> yeah, I see them
[20:02:16] <Colourless> i think I could fix it.
[20:02:25] <Colourless> the
[20:04:32] <Colourless> the 2 activating eggs should only hatch the field eggs if the field eggs aren't hatched
[20:05:12] <wjp> sounds reasonable
[20:08:01] <wjp> egg type 10 == button?
[20:08:18] <Colourless> yeah
[20:09:36] <Colourless> this should work. Hope it doesn't screw up other things
[20:11:07] <wjp> did you only check for the hatched flag on monster eggs, btw?
[20:11:18] <Colourless> any
[20:12:59] --> triptroni has joined #exult
[20:13:07] <triptroni> hey
[20:13:09] <wjp> hi
[20:13:18] <Colourless> hi
[20:13:35] <triptroni> when is the next official release??
[20:13:47] <wjp> we're hoping sometime next week
[20:14:18] <mrod> hello
[20:14:45] <triptroni> cool]
[20:15:17] <triptroni> hey when are you gonna do video options?
[20:15:28] <wjp> in the game menu you mean?
[20:15:39] <triptroni> yeah
[20:15:44] <Colourless> hmmmm. This is bad. It doesn't appear that flag 0x12 is being saved
[20:16:26] * jameson commits his changes
[20:16:38] <wjp> triptroni: don't know... there's not going to be anything in there that you can't already set, btw
[20:16:52] <wjp> Colourless: ouch... that is bad
[20:16:53] <triptroni> hey i g2g 2 school seeya
[20:17:00] <wjp> bye
[20:17:13] <jameson> Alpha should work now, at least as far as I have tested it.
[20:17:23] <jameson> triptroni: Hi, and goodbye!
[20:17:33] <triptroni> :) seeya
[20:19:46] <mrod> bye
[20:19:50] <Colourless> no it's worse than that, they aren't being read
[20:20:14] <Colourless> (for eggs)
[20:21:00] <wjp> and fields are eggs...
[20:21:29] <Colourless> yeah
[20:21:33] <Colourless> i know
[20:21:46] <-- triptroni has left IRC (Ping timeout for triptroni[p83-tnt6.akl.ihug.co.nz])
[20:23:58] <wjp> how/where are those flags stored anyway?
[20:25:49] <Colourless> they aren't stored....
[20:25:56] <Colourless> i remember that now
[20:27:11] <Colourless> that means, i can't save the objects that have flag 12 set
[20:27:15] <Colourless> 0x12
[20:27:39] <wjp> wouldn't that cause rather weird effects?
[20:27:54] <Colourless> i beleive the original acted exactly like that
[20:28:09] <Colourless> things disappeared after reloading a game
[20:28:12] <wjp> it did?
[20:28:14] <Colourless> yeah
[20:31:00] <Colourless> actually, i think i'm wrong
[20:34:34] <Colourless> i am wrong
[20:36:03] <wjp> uh oh
[20:36:27] <jameson> What happen?
[20:36:30] <wjp> so we do need to save flags?
[20:36:46] <Colourless> somehow the originals still knew that they are temp.
[20:37:24] <wjp> we could go disect some savegames...
[20:37:52] <Colourless> that we could. Exults and U7's IREG format is the same
[20:39:02] <wjp> maybe savegame right at the start where a temp. has been created by lightning?
[20:39:35] <Colourless> maybe
[20:40:24] <Colourless> there is 1 bit that isn't used in all objects
[20:41:39] <Colourless> it's in the 2 bytes the make up the shapeid (shape, frame), Only 15 of the 16 bits are used
[20:42:07] <wjp> int shnum = entry[2]+256*(entry[3]&3);
[20:42:11] <wjp> int frnum = entry[3] >> 2;
[20:42:17] <wjp> those?
[20:42:43] <Colourless> yeah
[20:43:13] <wjp> I guess it would be the high bit of frnum here?
[20:43:34] <Colourless> yeah
[20:44:01] <wjp> how does SI get away with >1024 shapes then?
[20:44:14] --> DivByZero has joined #exult
[20:44:19] <DivByZero> wow
[20:44:20] <DivByZero> :)
[20:44:20] <Colourless> >1024 are used only as alternate avatar shapes
[20:44:23] --- DivByZero is now known as _Kreed_
[20:44:29] <wjp> oh, I see
[20:44:30] <Colourless> can't save them
[20:44:38] <wjp> hi
[20:44:44] <_Kreed_> hi
[20:44:56] <Colourless> when I load the avatar i have to recalc the shape number every time
[20:44:59] <Colourless> hi
[20:45:44] <Colourless> i think exult may actually use the 6 bits of frnum though
[20:46:09] <Colourless> may... I could be wrong
[20:46:20] <wjp> although that last bit is just a direction bit
[20:46:38] <wjp> (together with the one before that)
[20:47:24] <Colourless> question: do shapes other than NPCs actually use that?
[20:49:00] <wjp> don't know...
[20:50:44] <Colourless> i need 1 bit, and only 1 bit!
[20:51:39] * Colourless has an idea. Lets mangle the ireg reading routine and use the IREGs from the gamedat of the original
[20:52:03] <Colourless> i'll detect if any objects are using that bit, and get the frame num to check if it makes sense
[20:52:25] <wjp> sounds good
[20:58:19] <wjp> 'real' npcs (the ones with numbers) are stored elsewhere, right?
[20:58:28] <Colourless> yeah
[20:58:44] <Colourless> all npcs are stored elsewhere actually
[20:59:16] <wjp> including usecode created ones?
[20:59:24] <Colourless> yeah
[20:59:30] <wjp> hmm, so there might be space for 64 frames there?
[20:59:40] <Colourless> yeah
[20:59:46] <Colourless> there is
[21:00:06] <wjp> sheesh... these file formats are a real mess... one bit here, one bit there...
[21:00:22] <wjp> first three bits of that byte, last 4 of that one, etc...
[21:00:30] <jameson> Hmm, why don't you just store the state in a file format of your own design?
[21:00:32] <Colourless> have you checked out actorio.cc?
[21:00:45] <wjp> yeah, that's where I'm looking just now :-)
[21:00:56] <Colourless> it's a real mess
[21:01:41] <wjp> jameson: hmmm, we could, I guess..., but we'd still need to read this file format for the initial game state
[21:05:31] <Colourless> ah ha. i already had this idea once before :)
[21:05:38] <Colourless> but with the ok to take flags
[21:05:50] <Colourless> i remember now. there are something like 5 unused bits
[21:06:19] <jameson> wjp: Good point. Still, a separate file for new stuff shouldn't be too troublesome...?
[21:06:40] <jameson> Then again, reading one set of data from two separate files probably isn't all that good.
[21:07:11] <jameson> But using 'A' initially and 'B' afterwards...
[21:07:18] <jameson> OK, well, you probably know better what you're doing.
[21:07:31] <Colourless> not really :)
[21:09:42] <Colourless> you know, it isn't even necessary to use 2 different types of files. the IREG file type uses codes to indicate what sort of object to read. We could just create new object types
[21:10:13] <jameson> That sounds like a pretty good idea, IMHO.
[21:11:27] <-- _Kreed_ has left IRC (Ping timeout for _Kreed_[derek.vhl.tudelft.nl])
[21:11:29] <-- InuYasha has left IRC (Ping timeout for InuYasha[cpe-24-221-255-164.ut.sprintbbd.net])
[21:11:29] <-- mrod has left IRC (Ping timeout for mrod[ppp-55-88.14-151.iol.it])
[21:11:30] --> mrod has joined #exult
[21:13:15] --> _Kreed_ has joined #exult
[21:19:50] <Colourless> whoa
[21:19:50] * Colourless things he's found something
[21:19:57] <Colourless> the lift byte in the shapes is given 1 entire byte, but it only needs 4 bits
[21:19:57] <Colourless> oddly enought, it's the high 4 bits that are used for the lift
[21:19:57] <wjp> not for every object type, it seems
[21:19:57] <wjp> oh, wait, just a different byte nr.
[21:19:57] <Colourless> i just checked objects and a few of them have some data in the lower 4 bits
[21:19:57] <wjp> all 4 bits?
[21:19:57] <Colourless> in fact all of the objects that did have something had a value 0011 and some had a value of 1011
[21:19:57] <Colourless> and you know what the ones that were 1011 are... they are the 5 force fields!
[21:19:57] <wjp> now that's interesting...
[21:20:03] <Colourless> ooh, one object some chain armor has a value of 0101
[21:20:03] <wjp> what kind of savegame is this?
[21:20:03] <Colourless> actually a few things have 0101
[21:20:03] <Colourless> it's from the original
[21:20:03] <wjp> how far along?
[21:20:03] <Colourless> let me restate that. The IREGs are from the original. I teleported to the force fields and copied them over my exult gamedat
[21:20:03] <wjp> ah, ok, that would explain why they're there :-)
[21:22:06] <Colourless> well, i can impliment the bit that i need
[21:22:22] <Colourless> but i don't know what the rest do yet
[21:22:32] <wjp> are any of those bits set in the initial world state?
[21:24:27] <Colourless> not sure, possibly
[21:24:45] <wjp> I'll check
[21:24:47] <jameson> Have to go now.
[21:24:49] <jameson> Good night!
[21:24:52] <wjp> night
[21:24:54] <-- jameson has left IRC ([BX] Does your mommy know you use BitchX?)
[21:26:08] <Colourless> sure are
[21:26:15] <wjp> yup
[21:27:20] <wjp> 0010, 0001, 1001, 0011, 1010
[21:27:21] <Colourless> there's a 1010's some 0001's
[21:27:42] <wjp> (in BG, btw)
[21:28:09] <wjp> mine are MS-bit first, btw
[21:28:25] <Colourless> mine too
[21:28:41] <wjp> 0001, 0010, 0011 are the only ones I see
[21:29:29] <Colourless> that is 1, 2 and 3
[21:29:32] <Colourless> ?
[21:29:35] <wjp> yeah
[21:29:58] <Colourless> in si i'm getting 1 and 6
[21:30:11] <wjp> 1,2,3 was from SI, btw
[21:30:31] <wjp> 1,2,3,5,6 from BG
[21:30:52] <wjp> ugh... 1,2,3,9,10, I mean
[21:31:24] <Colourless> i would assum that 9 and 10 are temporary versions of 1 and 2
[21:31:56] <wjp> what do you mean?
[21:32:11] <Colourless> 1000 = temporary
[21:32:32] <Colourless> 1001 = 1000 + 0001
[21:32:36] <wjp> oh, yeah, that's what I think too
[21:33:12] <Colourless> question is, what do 0001, 0010 and 0100 map to in Obj_flags
[21:45:17] <wjp> I'm listing all BG objects which have 0010 set:
[21:45:25] <Colourless> ok
[21:45:28] <wjp> 773 (cart), several times
[21:45:35] <wjp> 292 (seat), several times
[21:45:57] <wjp> 652 (cart), several times
[21:46:10] <wjp> oops no, not that last one
[21:46:39] <wjp> 361 (sign)
[21:46:46] <wjp> 594 (dagger)
[21:46:57] <wjp> 322 (open shutters)
[21:47:04] <wjp> 336 (light source)
[21:47:26] <wjp> 290 (closed shutters)
[21:47:47] <wjp> 591 (main gauche)
[21:47:56] <wjp> 444 (hood)
[21:48:05] <wjp> 588 (swamp boots)
[21:48:19] <wjp> 642 (book)
[21:48:28] <wjp> 628 (cup)
[21:48:44] <wjp> 823 (artist's equipment)
[21:50:21] <wjp> club, more shutters, horseshoe, thongs, more shutters, plate, basket, bag, scroll, cup,
[21:50:33] <wjp> and the list goes on and on and on
[21:51:01] <Colourless> makes no sensce to me
[21:54:17] <wjp> 1 seems to be set on some beds, some signs, some cart-parts, sails, a lit sconce, 'red flag's, posts
[21:55:18] <wjp> 8 on a crossbeam and red flags
[21:55:49] <Colourless> 8 is set?
[21:55:53] <wjp> yeah
[21:56:00] <Colourless> from start?
[21:56:05] <wjp> yes
[21:56:11] <Colourless> coords?
[21:56:24] <wjp> on the red flags waving in front of the trinsic gates, it seems
[21:56:39] <wjp> I'm not outputting coords (yet)
[22:00:33] <wjp> I don't get these flags
[22:02:11] <Colourless> screw it. I'm not going to try to use them
[22:03:15] <wjp> the high bit seems to be set on some potions in moonshade too
[22:03:26] <-- _Kreed_ has left IRC (Blind Guardian 0wnz j00 a11)
[22:03:31] <mrod> bye, see you later
[22:03:52] <-- mrod has left #exult
[22:04:03] <wjp> and on some fence pieces in monitor
[22:04:12] <wjp> ...this looks practically random
[22:05:48] <wjp> pennants seem to be popular for the high bit too
[22:06:01] <wjp> hehe, they cycle through all possible colours in SI :-)
[22:12:47] <Colourless> i'm just adding another byte that is used for the flag
[22:13:49] <wjp> length 7 and 13?
[22:14:04] <Colourless> just 7 at the moment
[22:14:20] <wjp> k
[22:14:50] <Colourless> or should I make it more bytes?
[22:15:32] <wjp> yeah, better add a couple more
[22:15:45] <wjp> otherwise we'll get endless backward-compatibility stuff
[22:15:46] <Colourless> how many? 4?
[22:16:02] <wjp> yeah, 4 should be enough
[22:16:16] <Colourless> that would give a possible 32 flags, not that I think we'll need that many
[22:16:30] <wjp> who knows :-)
[22:26:35] * Colourless is compiling
[22:43:02] <wjp> still compiling?
[22:43:13] <Colourless> finished. It seems to work fine
[22:43:44] <wjp> excellent
[22:56:15] <Colourless> i'm just fixing a movement bug, then i'll commit
[23:02:41] <wjp> what movement bug?
[23:03:15] <-- chimera|wookin has left IRC (Ping timeout for chimera|wookin[holladay.cb-travel.com])
[23:03:26] --> chimera|wookin has joined #exult
[23:03:47] <Colourless> if you continue to hold the right mouse button down in SI, and you don't move your mouse, you'll move about 8 paces and then stop.
[23:04:09] <wjp> oh, that one
[23:04:14] <Colourless> The bug only effects SI because someone didn't to a Game::get_game_type() != SERPENT_ISLE
[23:15:52] <wjp> I think I should go to bed :/
[23:16:06] <Colourless> i'll be going to bed soon as well
[23:16:34] <wjp> guess I'll have to check out your modifications tomorrow evening :-)
[23:16:44] <Colourless> yeah
[23:17:13] <wjp> g'night
[23:17:17] <Colourless> night
[23:17:21] <-- wjp has left IRC (sleep)
[23:18:17] --> InuYasha has joined #exult
[23:25:11] <-- Colourless has left IRC (bedtime)
[23:45:42] --> Kirben has joined #exult