#gemrb@irc.freenode.net logs for 12 Aug 2010 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage


[00:00:50] --> nickdaly` has joined #GemRb
[00:01:24] <-- edheldil_ has left IRC (Ping timeout: 265 seconds)
[00:11:04] <-- nickdaly` has left IRC (Remote host closed the connection)
[00:14:55] --> edheldil_ has joined #GemRb
[00:22:38] --> nickdaly has joined #GemRb
[00:28:00] --> nickdaly` has joined #GemRb
[00:29:59] <-- nickdaly has left IRC (Ping timeout: 260 seconds)
[00:53:25] <-- edheldil_ has left IRC (Ping timeout: 276 seconds)
[01:07:04] --> raevol has joined #GemRb
[01:20:15] --- nickdaly` is now known as nickdaly
[01:27:22] <-- nickdaly has left IRC (Read error: Operation timed out)
[01:28:19] --> nickdaly has joined #GemRb
[01:47:33] <-- raevol has left IRC (Quit: Leaving.)
[01:50:58] --> raevol has joined #GemRb
[03:29:13] --> nickdaly` has joined #GemRb
[03:30:49] <-- nickdaly has left IRC (Ping timeout: 248 seconds)
[05:51:25] --> edheldil_ has joined #GemRb
[06:28:31] <-- raevol has left IRC (Quit: Leaving.)
[06:28:32] <-- edheldil_ has left IRC (Ping timeout: 265 seconds)
[07:25:27] <Edheldil> hi
[07:33:34] --> SiENcE has joined #GemRb
[07:36:24] --> edheldil_ has joined #GemRb
[07:42:23] <-- |Cable| has left IRC (Remote host closed the connection)
[08:05:54] --> lynxlynxlynx has joined #GemRb
[08:05:55] --- ChanServ gives channel operator status to lynxlynxlynx
[08:16:10] <SiENcE> morning
[08:16:21] <SiENcE> hey fuzzie, sound is working fine
[08:17:10] <lynxlynxlynx> awesome
[08:17:32] <lynxlynxlynx> are you now at a performance gain situation vs 0.6.1?
[08:25:28] <SiENcE> speed is nearly the same
[08:25:53] <fuzzie> the music code could be improved a lot more, i think
[08:25:58] <SiENcE> mainmenu 55fps using hw_surface and ingame ~15-17fps using nosound and 14fps using sdlaudio
[08:26:22] <SiENcE> when i press pause the fps are increased to 27fps
[08:26:28] <SiENcE> thats for now
[08:27:28] <SiENcE> i modified some parts of the code SDLVideo and /core/GUI/GameControl.cpp using defines
[08:27:43] <SiENcE> do you want this patch or files to merge into official code?
[08:27:54] <fuzzie> we should do the keybindings properly, i think
[08:28:17] <SiENcE> what do you mean?
[08:28:20] <fuzzie> but i have no problem merging the scaler code if it makes it easier for you
[08:28:39] <fuzzie> keybindings should be in python, shouldn't need you to hack the C++ :)
[08:29:09] <fuzzie> but that is my problem
[08:29:18] <SiENcE> yep
[08:31:15] <fuzzie> lynxlynxlynx: do you think my last two commits from last night are acceptable?
[08:32:16] <fuzzie> maybe should just print the filename for plugins, the path takes up a lot of space
[08:32:34] <fuzzie> just wondering how to make the console log readable
[08:35:01] <Edheldil> fuzzie: I would like to implement the plugin lists you talked about.
[08:38:50] <fuzzie> if you can work out what tomprince was doing, that would be neat
[08:39:39] <fuzzie> case-sensitivity (i guess just force everything to lower-case?) would be nice too
[08:40:04] <fuzzie> this is the code in Interface.cpp which calls the 'GetDriver' in PluginMgr.cpp, i guess
[08:43:57] <fuzzie> would also be nice if it printed an error when trying to register two drivers with the same name, and things like that
[08:44:14] <fuzzie> i am not really too impressed by it so far, it is worse than the PluginDelay for me
[09:17:25] <lynxlynxlynx> hugin shows the worst of g++: they had to split the stitcher into 5 files and yet their compilation still renders my system unusable for almost an hour ><
[09:19:09] <fuzzie> swapping, or just slow?
[09:20:07] <fuzzie> (and if you think g++ is slow on Linux, try it on OS X; not much of a surprise that Apple fund LLVM :( )
[09:20:26] <lynxlynxlynx> both
[09:22:49] <lynxlynxlynx> those commits look fine
[09:23:14] <fuzzie> ok. i am fine if anyone wants to revert, just trying to tidy up.
[10:31:36] <-- nickdaly` has left IRC (Ping timeout: 260 seconds)
[10:37:56] <fuzzie> lynxlynxlynx: so, if i save a game, and a load a game, the sources remain intact
[10:38:43] <lynxlynxlynx> where did the effect come from?
[10:38:50] <fuzzie> a spell
[10:39:00] <fuzzie> well, specifically a bunch of different mage+priest spells
[10:39:18] <fuzzie> so i need a better reproduction recipe :)
[10:39:39] <lynxlynxlynx> i think those get applied via a different path, but i'll improve the instructions
[10:40:29] <fuzzie> well, i mentioned that effects applied via another effect don't seem likely to get a Source at all
[10:40:46] <fuzzie> i just have no idea where to start looking :)
[10:43:27] <fuzzie> and i guess "the painting prisoners aren't all prisoners" is fixed now
[10:45:02] <lynxlynxlynx> yes, i already mentioned that
[10:45:13] <fuzzie> i mean, i'm just poking through the todo list again
[10:45:46] <lynxlynxlynx> obviously
[10:45:53] <fuzzie> our whole strings.2da thing is a bit .. inconvenient :)
[10:49:22] <fuzzie> oh, all is well, these strings are mostly hardcoded in the exe
[10:54:17] <fuzzie> i guess the trouble with the jar is that there isn't actually enough space in there for our actor searchmap squares
[10:55:16] <fuzzie> the space available is 2 high, and the PC needs 3
[11:06:17] <fuzzie> i see incorrect VVC offsets everywhere, btw
[11:06:34] <fuzzie> 1
[11:06:36] <fuzzie> oop
[11:19:23] <fuzzie> lynxlynxlynx: oh, btw, did you see Avenger come by last night, re: hardcoding of "Chapter" string?
[11:20:12] <lynxlynxlynx> no, i'll look it up
[11:20:27] <lynxlynxlynx> i know there are strrefs for this, but i see no reason to bother
[11:20:45] <fuzzie> won't it fail in everything except English, your way?
[11:21:13] <lynxlynxlynx> oh, right
[11:21:46] <fuzzie> i think that's the only reason
[11:22:45] <Edheldil> I, for one, have only Czech version of some games :)
[11:22:49] <fuzzie> so, two bugs with innates: the gui is apparently not actually checking whether spells are memorized (?!), and it fails to remove everything except the first spell
[11:23:42] <fuzzie> ok, the first one is easy to fix
[11:25:58] <lynxlynxlynx> huh, that sounds familiar
[11:26:10] <lynxlynxlynx> but i haven't experienced it in a while
[11:26:27] <fuzzie> sorry, should clarify: looking into bhaal innate removal
[11:27:19] <lynxlynxlynx> ah on soul steal
[11:27:53] <fuzzie> oh dear, this looks like it's a really stupid bug
[11:28:53] <fuzzie> ugh
[11:32:21] <fuzzie> something very bad happens here
[11:32:29] <fuzzie> oh, right
[11:32:43] <fuzzie> so, almost all spell removal by name was broken
[11:33:01] <fuzzie> but only on 32-bit, heh
[11:34:05] <fuzzie> and i bet this is responsible for loads of other bugs
[11:39:21] <fuzzie> oh dear oh dear
[11:42:58] <fuzzie> ok, not as bad as i thoguht
[11:48:47] <fuzzie> obviously everyone else knows better than me how this works :)
[11:51:24] <CIA-26> GemRB: 03fuzzie * r906d1a8d12aa 10gemrb/gemrb/core/Spellbook.cpp: fix broken strnicmp in Spellbook::RemoveSpell
[11:51:25] <CIA-26> GemRB: 03fuzzie * r46a033f5b659 10gemrb/gemrb/core/Spellbook.cpp: clear spell info cache after removing a spell
[11:51:49] <fuzzie> innate removal works fine now
[11:52:38] <fuzzie> probably also fixes any other bugs which removed all your spells
[11:52:41] <fuzzie> such as sequencers/triggers
[11:58:58] <lynxlynxlynx> cool
[11:59:24] <lynxlynxlynx> btw, why do we display the options on startup? That could easily be surpressed too
[11:59:57] <fuzzie> i mentioned that last night, but there's no obvious debug flag to wrap them in
[12:00:06] <fuzzie> but just commenting the line out sounds fine to me
[12:00:18] <lynxlynxlynx> yeah
[12:14:40] <SiENcE> does someone knows mips asm? i want to optimize the downscaler
[12:14:59] <SiENcE> this is the g++ generated mips asm code using -O3 http://pastebin.com/GneWuWgt
[12:18:11] <fuzzie> not well enough to optimise code remotely
[12:23:40] <SiENcE> well that is my new implementation....this one here is the currently used one : http://pastebin.com/jutbVFKY
[12:23:49] <SiENcE> the new uses 32bit
[12:24:02] <SiENcE> seems to be more compact and smaller
[12:24:26] <fuzzie> is it faster?
[12:25:09] <fuzzie> generally you'd hope it would be
[12:25:12] <SiENcE> now i have to test this
[12:25:13] <SiENcE> :)
[12:25:38] <SiENcE> its a good way to analyse small functions
[12:26:06] <SiENcE> it's better than only testing and watching the dps
[12:26:07] <SiENcE> fps
[12:26:57] <fuzzie> optimisation gets very tricky, though
[12:27:17] <fuzzie> you fix some obvious inefficiency in the asm code, and your code is suddenly twice as slow
[12:27:37] <fuzzie> maybe simpler on cheap mobile mips processors though :)
[12:28:54] <SiENcE> ah no i don't understand mips that much
[12:29:16] <SiENcE> i only modify my c code and take a look at generated asm code
[12:29:29] <SiENcE> what optimization is the best
[12:29:32] <fuzzie> gcc is pretty smart
[12:29:37] <SiENcE> yep
[12:29:42] <SiENcE> sometimes too smart
[12:42:37] <fuzzie> sometimes it is so very easy to work out things in the original engine
[13:15:44] <Edheldil> is it?
[13:17:04] <Edheldil> I was thinking that those InterlockedDecrement etc. functions could perhaps come from Lua
[13:48:11] <CIA-26> GemRB: 03lynxlupodian * r7105ebfc4867 10gemrb/gemrb/GUIScripts/bg2/GUISAVE.py: fixed i18n issue from fab17419
[13:50:06] <lynxlynxlynx> i can't get the spell trigger to wipe the spellbook either :)
[14:00:53] <CIA-26> GemRB: 03lynxlupodian * rb5e6d68647b0 10gemrb/gemrb/GUIScripts/bg2/GUIMG.py: bg2::guimg: check if the sorcerer knows any spells of that level, so that a /0 can't occur
[14:20:34] <fuzzie> cool
[14:20:46] <fuzzie> Edheldil: i mean, just by trying things :-)
[14:21:09] <fuzzie> i try to avoid looking at any disasm for gemrb, because it is time-consuming enough just to do other things
[14:22:05] <SiENcE> fuzzie, my new scaler is faster :)
[14:22:15] <Edheldil> good :)
[14:22:17] <SiENcE> 15fps -> 19fps
[14:22:42] <SiENcE> with ingame music
[14:37:36] <fuzzie> that is good
[14:48:00] <fuzzie> i am back to the atom netbook, since am not at home
[14:48:03] <fuzzie> the atom really is amazingly slow
[15:10:15] <fuzzie> i get really awful artifacts from the fade code, here
[15:10:48] <fuzzie> i guess it's rendering the buffer in the middle of the fade, since the fade is done directly on the single-buffered surface
[15:12:19] --> Maighstir has joined #GemRb
[15:46:21] <SiENcE> how many fps do you have on your netbook?
[15:46:25] <SiENcE> ingame?
[15:48:59] <fuzzie> about 37fps at 640x480
[15:49:38] <SiENcE> ok
[15:50:52] <fuzzie> but it's quite possible that compiz/pulseaudio/etc cause problems
[15:51:42] <SiENcE> i have to go now
[15:51:43] <SiENcE> cya
[15:51:46] <SiENcE> later
[15:51:53] <-- SiENcE has left IRC (Quit: @all: cya)
[16:09:46] <Edheldil> later
[16:18:31] --> |Cable| has joined #GemRb
[16:23:37] <-- edheldil_ has left IRC (Ping timeout: 248 seconds)
[16:30:59] <fuzzie> there's some interestingly obvious flaws in our visibility stuff
[16:34:40] <-- lynxlynxlynx has left IRC (Ping timeout: 265 seconds)
[16:34:59] <fuzzie> the VisibilityMasks are just .. bad
[16:38:11] <fuzzie> this 'LargeFog' thing is probably responsible
[16:38:45] <fuzzie> it just randomly adds a whole search square onto the values
[16:50:05] <fuzzie> oops, SoA crash
[16:51:14] <fuzzie> seems something in our code is fishing global NPC objects out of the game
[16:51:35] <fuzzie> "global actors are always found by scripting name", says the comment
[16:55:37] <fuzzie> how annoying
[16:58:30] <fuzzie> the search map thing is really obvious now i look though
[17:09:34] <CIA-26> GemRB: 03fuzzie * rce9a7ae8d013 10gemrb/gemrb/core/GameScript/Actions.cpp: hack DisplayStringWait to be more like the original
[17:09:36] <CIA-26> GemRB: 03fuzzie * r7776e6484071 10gemrb/gemrb/core/GameScript/Matching.cpp: avoid crashes when we ActionOverride an instant action on a global PC without a map
[17:14:56] --> Avenger has joined #GemRb
[17:14:56] --- ChanServ gives channel operator status to Avenger
[17:16:50] <Avenger> hi
[17:17:16] <fuzzie> hi
[17:17:51] <fuzzie> this LargeFog stuff doesn't work properly, what's it meant to do?
[17:18:28] <fuzzie> offset the search map by a square in each direction?
[17:19:33] <fuzzie> (not an important question! just if you remember)
[17:20:12] <Avenger> i think it is pst specific?
[17:20:22] <fuzzie> it is bg2/iwd2 specific
[17:20:43] <fuzzie> well, i guess it is more: SmallFog is bg1/pst specific :)
[17:21:54] <Avenger> yes, probably
[17:22:43] <fuzzie> but if you don't remember much, i'll just work it out from scratch
[17:26:41] <Avenger> why is it important?
[17:27:17] <Avenger> i think bg1/pst had less detailed fog of war
[17:27:59] <fuzzie> it breaks visibility, some bugs
[17:27:59] <Avenger> it is strange that iwd is not like bg1 in this
[17:28:06] <fuzzie> i have to go, back in a bit
[17:28:28] <Avenger> i found why slayerchange kills
[17:28:57] <Avenger> the damage opcode in bg2 checks if the source is slayerchange, and if some other flags are set, it disables itself
[17:29:10] <Avenger> it is totally hacked :)
[17:30:45] --> Micru has joined #GemRb
[17:31:34] <Micru> hi there!
[17:31:42] <Micru> it works!
[17:38:39] --> lynxlynxlynx has joined #GemRb
[17:38:39] <-- lynxlynxlynx has left IRC (Changing host)
[17:38:39] --> lynxlynxlynx has joined #GemRb
[17:38:39] --- ChanServ gives channel operator status to lynxlynxlynx
[17:52:10] <-- Maighstir has left #GemRb
[17:53:40] <Avenger> hi
[17:58:09] <Micru> hi
[17:58:21] <fuzzie> Avenger: that is horrible
[17:59:10] <fuzzie> Avenger: so need for previous stats?
[17:59:29] <Avenger> ?
[17:59:40] <fuzzie> for the slayerchange
[17:59:57] <fuzzie> there *is* a resist opcode in the spell
[18:00:05] <Avenger> we may still need them
[18:00:07] <fuzzie> it's just much later in the effect queue
[18:01:02] <fuzzie> but previous stats are an annoying change which it would be nice to avoid unless something actually needs it
[18:06:11] <Avenger> i agree
[18:11:00] <fuzzie> you think we should just add this damage opcode hack?
[18:11:33] <fuzzie> meh, i should've checked the Interact stuff while i was home
[18:12:02] <Avenger> we should do something more general
[18:12:05] <Avenger> not sure how
[18:12:11] <Avenger> but i don't care yet :)
[18:12:25] <Avenger> i'm still trying to explore as much as i can
[18:12:26] <fuzzie> sure, but i do :)
[18:12:38] <Avenger> now looking: item flags
[18:12:38] <fuzzie> i'm trying to see if i can make SoA as playable as possible before the release
[18:13:00] <Avenger> there is a function: get item flags, and i just defined an enum for the bits :)
[18:13:06] <Avenger> finally i can see how they are used
[18:13:16] <fuzzie> while you are playing with your toy, i guess :)
[18:13:44] <Avenger> it is totally fun
[18:15:33] <Avenger> the best game: click on a random spot in the engine, look at the function, and guess what it does :)
[18:15:53] <Avenger> with more and more parts commented, it is getting doable
[18:19:16] <-- Micru has left IRC (Ping timeout: 265 seconds)
[18:23:18] <fuzzie> i have a terrible time trying to make sense of the Particles code
[18:24:24] <Avenger> i didn't see much of the particles yet. I know only that the chunking death bodyparts are done by it too :)
[18:24:38] <fuzzie> well, gemrb's implementation is a bit odd
[18:25:02] <Avenger> the worst thing: at one point, it worked!
[18:25:05] <fuzzie> you set it to P_GROW, and .. there's no state change, ever :)
[18:25:53] <fuzzie> i guess FadeSparkle is meant to handle it
[18:26:34] --> Maighstir has joined #GemRb
[18:27:47] <fuzzie> but i don't think it ever worked in what you committed
[18:28:48] <fuzzie> because there was never any call to FadeSparkle committed
[18:30:48] <fuzzie> (well, ok, git is still searching history to make sure of that)
[18:31:22] <Avenger> huh, i didn't know this: if an item is silver or cold iron, it needs to be identified
[18:31:24] <fuzzie> ok, yes, checked all the way back, no call
[18:31:55] <fuzzie> so sparkles never faded, although i guess for fountain sparkles this is not important
[18:32:35] <Avenger> to be honest, i think i tested this only with a stationary sparkle, but it vanished
[18:32:55] <Avenger> it was before the projectile code
[18:33:02] <fuzzie> well, it works if you manually make one in the C++
[18:33:04] <Avenger> i used only the sparkle opcode
[18:33:06] <fuzzie> just doesn't work via Sparkle()
[18:33:37] <fuzzie> but if you pick the right params, maybe it renders 0 points, i guess
[18:33:51] <fuzzie> i think it is more likely that it worked and then you didn't commit the working code :)
[18:41:32] --> Micru has joined #GemRb
[18:42:04] <Micru> hi again, my pc just crashed using "scroll lock"
[18:42:40] <Micru> should i post the log to the forum?
[18:42:55] <fuzzie> or to pastebin
[18:43:08] <Avenger> scroll lock?
[18:43:16] <Micru> yep
[18:43:39] <Micru> the key
[18:43:48] <Avenger> it crashed immediately as you pressed it?
[18:44:14] <Avenger> i can only imagine some problem if the console is locked for a long time :)
[18:44:33] <Micru> the first time was working fine, but then i used it during a cutscene and then everything was frozen
[18:44:34] <Avenger> i wonder what happens then
[18:44:43] <Micru> i still could move the mouse, but just inside the window
[18:44:47] <Avenger> did you try to unpress it?
[18:44:57] <Micru> yes
[18:45:02] <Micru> didn't work
[18:45:13] <fuzzie> heh
[18:45:13] <Micru> nor crl+alt+supr, nothing
[18:45:18] <fuzzie> surely the cutscene should end, though?
[18:45:30] <Micru> it didn't
[18:45:46] <Avenger> well, if it printed something in the console, and couldn't process due to the lock
[18:45:47] <fuzzie> you maybe hit space by mistake, that is another keybinding which shouldn't work
[18:46:01] <fuzzie> Avenger: we bind 'scroll lock' to capture the mouse
[18:46:58] <Micru> mmm, where is the log exactly?
[18:47:10] <Avenger> i see, i wonder if it is really a crash then ;)
[18:48:30] <Avenger> can you bring up the console?
[18:48:50] <fuzzie> there do seem to be places where hitting scroll lock will not release the lock
[18:48:57] <Micru> 1 moment, i'm looking for the log
[18:49:02] <fuzzie> but that is just that
[18:49:04] <Micru> there was something in red
[18:49:17] <fuzzie> and ctrl-space should always work
[18:50:29] <fuzzie> but it is not so user-friendly
[18:50:55] <Avenger> ctrl-space, then typing Quit() works almost always :)
[18:51:19] <fuzzie> but then you have to work out that you have to type quit
[18:51:25] <fuzzie> which is not so easy, especially when you can't see the console
[18:51:51] <Avenger> fuzzie: would you please fix fxopcodes, line 3321, it is still 'and' instead of '&&' :)
[18:52:04] <fuzzie> Avenger: still got no modern compiler? :)
[18:52:08] <Avenger> i'm in windows
[18:52:10] <Avenger> :)
[18:52:21] <fuzzie> vc++ supported it for four releases now, you know :)
[18:52:33] <Avenger> 7,8,9,10 ?
[18:52:41] <Micru> shouldnt be the log in /usr/local/etc/gemrb?
[18:52:43] <fuzzie> yes
[18:52:55] <fuzzie> Micru: by default, there is no log if you have a console
[18:53:01] <Micru> aha
[18:53:05] <Micru> anyway, i took pics
[18:53:08] <Avenger> unless you redirect
[18:53:11] <Micru> just in case
[18:53:13] <fuzzie> did you try hitting space? :)
[18:53:25] <Micru> mm
[18:53:31] <Avenger> i guess you meant ctrl-space?
[18:53:39] <fuzzie> Avenger: gemrb lets you pause in cutscenes :(
[18:53:42] <Micru> no, no crtl space
[18:54:11] <Avenger> hmm, if ctrl-space doesn't work then it is a real freeze :) not a crash though :P
[18:54:37] <CIA-26> GemRB: 03fuzzie * rca599ee8748f 10gemrb/gemrb/plugins/FXOpcodes/FXOpcodes.cpp: s/and/&&/
[18:54:48] <fuzzie> Avenger: you notice how BreakInstants does nothing, btw? :)
[18:55:15] <fuzzie> i should get rid of all our implementation
[18:55:25] <fuzzie> although i think it isn't actually used in any game script
[18:55:57] <Avenger> not really important then :)
[18:56:05] <fuzzie> well, it is a clever trick
[18:56:16] <fuzzie> it is not instant, so: once it is queued, no more instants get executed when queued!
[18:56:39] <fuzzie> maybe they use it internally
[19:01:13] <fuzzie> our blocking actions all suck though
[19:03:34] <Micru> ok, i finished with the transcription, here you go: http://pastebin.com/hv709xpE
[19:04:07] <fuzzie> huh
[19:04:12] <fuzzie> first area of ToB?
[19:04:15] <Micru> yes
[19:06:01] <Avenger> did you try to open some container maybe?
[19:06:23] <Avenger> not like i remember any container openable in the first area
[19:06:24] <Micru> no, it was a cutscene
[19:06:33] <fuzzie> there are piles on the first area, maybe
[19:06:43] <fuzzie> lots of possible bugs
[19:06:50] <Micru> i had some spells active though, but not a container
[19:06:54] <Avenger> it looks like it wanted to close a window for dialog, which was already closed, i think
[19:07:08] <fuzzie> probably the gui got removed from under it
[19:07:21] <fuzzie> because our gui hiding/showing code sucks
[19:07:28] <Avenger> hmm, do your close window function works in cutscene?
[19:07:40] <fuzzie> and we don't delay cutscene starts
[19:07:46] <fuzzie> i will fix that one this evening
[19:07:48] <fuzzie> i hope
[19:08:06] <fuzzie> assuming the original engine does actually use a message to delay cutscene starts
[19:10:19] <fuzzie> but Avenger has the fancy disassembler, so bug him to look :p
[19:10:33] <fuzzie> it is difficult for me to implement messages when i don't know which ones are actually used
[19:21:36] <Avenger> it is definitely doing messages for cutscene :)
[19:21:48] <fuzzie> the trouble is, startcutscene is an instant
[19:22:08] <fuzzie> but with a message it is simple to fix
[19:24:41] <Micru> btw, i think you are missing one opcode in the "sanctuary" spell (SPPR109). the character should disappear completely and only the animation should be there
[19:25:33] <fuzzie> well, we don't replace the spells, they are in the original
[19:25:48] <Avenger> fuzzie: nodecode is actively used by the tob engine, just seeing that
[19:25:50] <fuzzie> what happens in gemrb right now?
[19:26:07] <fuzzie> Avenger: the ToBEx guy said, but i don't believe a word
[19:26:15] <fuzzie> i mean, i don't know what it does
[19:26:34] <fuzzie> but it doesn't do what he suggested :P
[19:28:02] <Avenger> sadly i don't know, this part is still complicated. there are lots of structures and pointers here
[19:28:16] <Avenger> i need to define more structs :)
[19:30:22] <fuzzie> Avenger: i guess Ascension64 said "do not decode any object.ids identifiers when loading a new action in the queue"
[19:31:00] <Avenger> yes, actually it does something like that, it skips a routine that does something with 3 objects in the action struct :)
[19:31:05] <Avenger> that's what i see
[19:31:09] <fuzzie> but that is in the action queue?
[19:31:26] <Avenger> it is just about to execute the action
[19:31:33] <fuzzie> every time it executes?
[19:31:35] <Avenger> first it checks if it is 'breakinstants'
[19:31:38] <Avenger> yes
[19:31:55] <Avenger> it is already the 'currentAction'
[19:32:28] <fuzzie> i think what it probably means is, the object is dynamic
[19:32:31] <Avenger> if it is not breakinstants, then calls a routine, that checks if the opcode is on the nodecode list
[19:32:38] <Micru> fuzzie : here you can compare both Sanctuary outputs --> http://picasaweb.google.com/lh/photo/E77lPljcBL2TU-nnIid41ND6qGmCiTMKOwRsdzF7mcU?feat=directlink
[19:33:04] <fuzzie> so it doesn't resolve the object and then store the actor id in the action, it simply lets the action re-evaluate the actor every execution
[19:33:07] <fuzzie> does that make sense?
[19:33:53] <fuzzie> Micru: that white line is a sword sticking out of the sanctuary?
[19:34:39] <Maighstir> looks like the sanctuary graphic is transparent in the original but not in GemRB
[19:35:17] <Micru> is a stick
[19:35:32] <Micru> Maighstir : the other way round
[19:35:43] <Micru> right original, left gemrb
[19:36:53] <Maighstir> oh
[19:37:50] <Micru> yep, actually i like better the way gemrb handles it, so maybe it is better to call it "difference" rather than "bug"
[19:38:28] <lynxlynxlynx> the original is just wierd
[19:38:55] <Micru> exactly....
[19:39:34] <Micru> maybe you can put this on the list of things gemrb improves
[19:40:36] <fuzzie> Avenger: yes, i stick by my interpretation of nodecode :)
[19:41:11] <Maighstir> right after "you can go back through the chargen after having imported a character" :-)
[19:41:57] <fuzzie> and "doesn't take several minutes to open the Load screen"
[19:42:15] <fuzzie> which i appreciate very much after having to remove most of my savegames from the original
[19:46:20] <Micru> fuzzie: is it possible that the autosaves are saved in a state before the gui has activated?
[19:47:14] <fuzzie> no
[19:47:33] <fuzzie> gui state is not saved
[19:47:42] <Micru> then it is strange that this autosave has no gui when i load it...
[19:48:02] <fuzzie> does it happen with real autosaves (moving between areas)?
[19:49:14] <Micru> haven't checked
[19:49:55] <fuzzie> if not, it is likely that your autosave is just somewhere with a script which hides the gui
[19:54:02] <-- |Cable| has left IRC (Remote host closed the connection)
[19:54:12] <Avenger> fuzzie: opcodes can run on non actor target, any scriptable may have an fxqueue. They got a rather crippled function set, though. this is why i didn't find knock earlier. It is executed only by non-actors
[19:54:24] <Avenger> this is effect opcodes, not actions...
[19:55:03] <Avenger> i don't like this too much, i would rather handle all target types in the same place
[19:55:32] <Avenger> just like with actions, but we need global id for all scriptables, that's sure
[19:55:49] <fuzzie> yes
[19:55:52] <fuzzie> i have that
[19:55:55] <fuzzie> that is no problem
[19:56:10] <fuzzie> you want an optional fxqueue on all scriptables?
[19:56:46] <Avenger> well, not sure :) does knock work atm?
[19:57:52] <Avenger> i think we just need some easy mechanism to determine the target in each opcode
[19:58:09] <Micru> fuzzie : the autosave is here https://sites.google.com/site/dacuetu/000000000-Auto-Save.zip
[19:59:06] <lynxlynxlynx> knock worked last time i tried it
[19:59:25] <lynxlynxlynx> it used to be bound on one of the debug keys, not sure if that has changed
[20:00:32] <fuzzie> Micru: thanks
[20:01:06] <fuzzie> Avenger: so there is no need for any opcode to run on a scriptable's fxqueue?
[20:01:31] <Avenger> fuzzie: i don't know yet
[20:01:39] <fuzzie> we implement knock by looking at the x/y position of the opcode
[20:01:50] <fuzzie> then unlocking whatever's at that position
[20:02:52] <Avenger> i think the target (actor) is 0 then. But if we got global ids, and the effect holds the target's global id (as in the original), the special opcodes could look it up easily
[20:03:10] <Avenger> i don't know if finding the target by coordinates is fine
[20:03:17] <Avenger> maybe it is, maybe not
[20:03:43] <fuzzie> but if scriptables can have fxqueues, then it might be that we need them
[20:03:48] <fuzzie> you know anything more about local ids in the original?
[20:03:55] <Avenger> these effects are all instants
[20:04:04] <Avenger> so they don't linger around
[20:04:12] <Avenger> that's why we need no fxqueue
[20:04:27] <fuzzie> so, where do you put the effects? :)
[20:04:51] <fuzzie> now you say 'the effect queue of some random actor' and i cry
[20:05:25] <fuzzie> but i bet if they have the fxqueue, they use it :)
[20:05:45] <Avenger> no, the owner is the caster in these times, but the fxqueue is in the 'air'
[20:05:57] <Avenger> the target is 0
[20:06:16] <Lightkey> fuzzie: btw, I just found out that while Loongson is mips64el, it seems the Linux distributions use 32-bit for the userland, because of the smaller footprint for embedded devices :-(
[20:06:24] <Lightkey> ehm..
[20:06:35] <fuzzie> that makes sense
[20:06:46] <Lightkey> a little bit late, been in the buffer for some weeks I think ;-)
[20:07:22] <fuzzie> some of the spell ids are sort of funny
[20:07:24] <Lightkey> so not really "just"
[20:07:43] <fuzzie> SWOOSH_GONE! POOF_GONE! DO_SOME_EFFECTS!
[20:08:03] <fuzzie> FLASHY_1, FLASHY_2, FLASHY_3, FLASHY_4, FLASHY_DEATH_YEAH!
[20:08:17] <fuzzie> dangerously silly people
[20:09:36] <fuzzie> Avenger: well, ok :) but i need global ids for the messages anyway, so they will go in
[20:09:47] <fuzzie> Avenger: i just want to know if i can get rid of the stupid local ids at the same time :)
[20:10:02] <Avenger> i think yes
[20:10:19] <Avenger> for all i see, the global id is 32 bits, and there is nothing like local id :)
[20:10:28] <fuzzie> see, that is what i want to hear
[20:10:38] <fuzzie> here, have some chocolate :)
[20:10:39] <Avenger> just tell me what you want to hear :)
[20:11:03] <fuzzie> "i disassembled the whole engine and rewrote it in C++, here is the whole thing"
[20:11:35] <fuzzie> although then i suppose we'd still have the stupid recurring effect list :P
[20:12:38] <fuzzie> i am quite happy just hearing cool things, really
[20:12:55] <fuzzie> we have enough bugs to fix, so new discoveries are nice to hear about but nothing is important
[20:13:14] <fuzzie> it is pretty ideal i guess :)
[20:17:33] <lynxlynxlynx> Micru: those "wrong message" screenshots are bogus
[20:17:48] <lynxlynxlynx> i fixed the save game window one
[20:19:11] <fuzzie> bogus?
[20:19:40] <fuzzie> fixing the startup message requires fixing the message window, but that is in the queue anyway
[20:19:48] <Avenger> fuzzie, there is a 'ticks_per_second' constant in the game, see tobex: //0xAACCD4 BYTE TICKS_PER_SECOND (15)
[20:19:54] <Avenger> it is used in many many places
[20:20:01] <fuzzie> Avenger: but it is 15, right? :)
[20:20:01] <Avenger> so i think it is the thing you wanted
[20:20:04] <Avenger> yes
[20:20:26] <fuzzie> i want the round/turn times, which i think is in the recurrent damage
[20:20:41] <fuzzie> i have not checked ToBEx
[20:21:22] <fuzzie> haha, constants for the search map :)
[20:21:30] <fuzzie> we should do that too, i guess, with defines though
[20:21:53] <fuzzie> and hardcoded save slot ids :(
[20:22:12] <Avenger> we have custom search map!
[20:22:21] <Avenger> and save slots too :)
[20:23:31] <fuzzie> we don't :P
[20:23:37] <Micru> lynxlynxlynx : what do you mean ? why are they bogus?
[20:24:19] <fuzzie> lynxlynxlynx: is your gemrb ToB run solo, btw?
[20:24:39] <fuzzie> i keep finding bugs which only appear with or without a party, so just want to know which one i should be trying
[20:24:56] <lynxlynxlynx> TICKS_PER_SECOND == AI_UPDATE_TIME :)
[20:25:18] <fuzzie> TICKS_PER_SECOND sure is a less stupid name :P
[20:25:33] <lynxlynxlynx> fuzzie: it is not solo, full party
[20:25:45] <fuzzie> lynxlynxlynx: ok, thanks
[20:25:49] <lynxlynxlynx> Micru: you mismatched the spells, since you didn't test them in a clean environment
[20:26:09] <lynxlynxlynx> npcs cheat
[20:26:25] <fuzzie> oh, right, i noticed that one of them was clearly NPC cast
[20:26:30] <lynxlynxlynx> test the spells on yourself and summons if need be
[20:26:59] <Micru> ok, i'll test them again
[20:27:38] <fuzzie> some of the other sshots are very useful though
[20:28:09] <fuzzie> but the only thing i really want fixed myself is the spell cast text, and i'm honestly not sure when it appears
[20:28:55] <Avenger> one hour is 4500 ticks, if that helps
[20:29:03] <Micru> fuzzie, in the next series of shots you'll have it more clear
[20:29:06] <Avenger> used in many places
[20:30:16] <fuzzie> Micru: doesn't really help, though, i think from a user point of view it is ambigious
[20:30:24] <fuzzie> i'll test it properly next week, if no-one else does
[20:31:34] <fuzzie> Avenger: we just do (7200*TICKS_PER_SECOND)/24 i think, which is 4500 also
[20:32:06] <fuzzie> i guess the spell cast actions probably all just print the text
[20:33:43] <fuzzie> but i hate adding things at random
[20:38:39] <lynxlynxlynx> atleast in iwd2 this is stat checked
[20:45:01] <Micru> lynxlynxlynx , how would you recommend to test spells like "remove fear"? Is it possible to apply "fear" with a cheat?
[20:46:00] <lynxlynxlynx> remove fear also protects from fear iirc
[20:46:12] <lynxlynxlynx> i got the icon which was good enough for me
[20:46:33] <lynxlynxlynx> i didn't plan to make such a thorough check
[20:47:30] <lynxlynxlynx> you can get a mage in the pocket plane and maybe one of them knows symbol:fear (not sure if it affects party members though)
[20:48:19] <-- Avenger has left IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716])
[20:48:47] <Micru> ok, i'll find a way
[20:49:15] <lynxlynxlynx> gate in a few demons, i think they can do it too
[20:49:26] <lynxlynxlynx> aura of fear is a cleric spell
[21:15:03] <lynxlynxlynx> hah
[21:15:19] <lynxlynxlynx> i killed a greater air elemental with one hit of chromatic orb
[21:16:38] <fuzzie> i really do love the chromatic orb death effect
[21:20:57] <lynxlynxlynx> the tooltip doesn't fit though
[21:21:17] <lynxlynxlynx> maybe another newline in there
[21:23:01] <fuzzie> there are some weird tooltip issues in the inventory where things fit fine in the original but are a mess in gemrb
[21:23:07] <fuzzie> i forget if i'm responsible for the wrapping code
[21:23:17] <fuzzie> but something to put on the todo list anyway
[21:23:25] <-- Micru has left IRC (Remote host closed the connection)
[21:23:38] <fuzzie> also, insert reminder about the Source issue here
[21:24:28] --> SiENcE has joined #GemRb
[21:24:42] <lynxlynxlynx> you mean a new testcase?
[21:25:47] <fuzzie> or just some hint as to what i should try; HLAs or kits or?
[21:26:01] <fuzzie> not important, just seems like it ought to be trivial to fix
[21:26:37] <lynxlynxlynx> i won't forget
[21:26:51] <fuzzie> ok :)
[21:26:56] <fuzzie> i forget everything, that's all
[21:29:18] <fuzzie> i rushed through the complex paths of SoA, it seems okay at least up to the Underdark
[21:29:43] <fuzzie> so can't be too bad
[21:30:31] <fuzzie> there's one more big possible breaker left, which is triggers, and then i think scripting is 'stable'
[21:30:42] <fuzzie> in the sense that it shouldn't get any worse
[21:35:58] <fuzzie> lynxlynxlynx: do you know how the LoadScreen works?
[21:36:31] <-- Edheldil has left IRC (*.net *.split)
[21:36:32] <-- fuzzie has left IRC (*.net *.split)
[21:36:32] <-- Maighstir has left IRC (*.net *.split)
[21:36:33] <-- Lightkey has left IRC (*.net *.split)
[21:36:34] <-- wjp has left IRC (*.net *.split)
[21:36:34] <-- Gekz has left IRC (*.net *.split)
[21:36:37] <-- CIA-26 has left IRC (*.net *.split)
[21:36:38] <-- SiENcE has left IRC (*.net *.split)
[21:39:11] <lynxlynxlynx> in what sense? they're pretty short scripts
[21:39:37] --> SiENcE has joined #GemRb
[21:39:37] --> Maighstir has joined #GemRb
[21:39:37] --> wjp has joined #GemRb
[21:39:37] --> CIA-26 has joined #GemRb
[21:39:37] --> Edheldil has joined #GemRb
[21:39:37] --> fuzzie has joined #GemRb
[21:39:37] --> Lightkey has joined #GemRb
[21:39:37] --> Gekz has joined #GemRb
[21:39:42] <lynxlynxlynx> in what sense? they're pretty short scripts
[21:41:06] --> wjp_ has joined #GemRb
[21:41:26] --> Gekz_ has joined #GemRb
[21:41:37] <fuzzie> well, it does GetGameString with STR_LOADMOS
[21:41:39] <-- wjp has left IRC (*.net *.split)
[21:41:39] <-- Gekz has left IRC (*.net *.split)
[21:41:42] <fuzzie> and, well, i don't understand that
[21:42:13] <fuzzie> i guess because it seems LoadMos is also used by TextScreen to store the table name
[21:42:40] <fuzzie> so basically, once TextScreen got called, the LoadScreen script errors out every time, since it's trying to use an image which doesn't exist
[21:42:47] <-- Gekz_ has left IRC (Changing host)
[21:42:47] --> Gekz_ has joined #GemRb
[21:46:13] <lynxlynxlynx> it looked hacky with that 0 loadmos thing
[21:46:46] <fuzzie> the GetString vs GetGameString is confusing too, and the fact the C++ side doesn't use the constant
[21:47:12] <lynxlynxlynx> btw, it seems unlikely that the original did so much dialog centering
[21:47:19] <lynxlynxlynx> in small rooms it is annoying
[21:47:26] <fuzzie> it does
[21:47:47] <fuzzie> but it didn't jump, it does the timer thing
[21:48:14] <fuzzie> well, ok, i don't *know* that it does, but i tested it and it did it for everything i tried in bg2.
[21:49:32] <lynxlynxlynx> so we should just remove the forcing once we have proper dialog pause?
[21:49:53] <fuzzie> i think scrolling always happens, paused or not
[21:51:21] <fuzzie> i forget though, it's been a long time since i checked it
[21:51:27] <fuzzie> maybe it was fading
[21:51:38] <fuzzie> but i'm sure there's some easier way to fix it
[21:51:47] <fuzzie> oh, right, TextScreen got merged
[21:51:55] <fuzzie> makes more sense
[21:57:48] <fuzzie> > CreateVisualEffectObject("SPSTRENH,"CHEST6")
[21:57:49] <fuzzie> ^- guh
[21:59:17] <fuzzie> should fix the parser to notice that's an error and not just break
[22:05:04] --- wjp_ is now known as wjp
[22:05:12] --- ChanServ gives channel operator status to wjp
[22:06:56] <lynxlynxlynx> equipped items don't set source
[22:07:23] <fuzzie> are they meant to?
[22:07:42] <lynxlynxlynx> yes, but this is a different issue
[22:07:45] <fuzzie> ok
[22:08:02] <lynxlynxlynx> for the clearing i can easily reproduce it by starting tob with a kensai
[22:08:30] <lynxlynxlynx> the debug dump shows the source, but when you reload, the info is gone
[22:14:43] <lynxlynxlynx> can you reproduce?
[22:15:23] <fuzzie> no, because i broke my whole binary right now, but i'll look at it
[22:15:27] <fuzzie> thanks
[22:19:50] <-- lynxlynxlynx has left IRC (Remote host closed the connection)
[22:21:55] --> |Cable| has joined #GemRb
[22:50:55] <-- SiENcE has left IRC (Ping timeout: 245 seconds)
[22:52:36] <CIA-26> GemRB: 03fuzzie * r34ce301660ad 10gemrb/gemrb/plugins/DLGImporter/DLGImporter.cpp: don't let quote errors ruin a whole set of dialog actions (see bg2's SAHIMP02)
[22:52:37] <CIA-26> GemRB: 03fuzzie * r32cb8a3154f1 10gemrb/gemrb/core/GameScript/ (GSUtils.cpp GameScript.cpp): cope more gracefully with action/trigger parse errors, and try and find more of them
[22:54:36] <fuzzie> that annoyingly doesn't actually find my error, but bedtime
[22:56:06] --> SiENcE has joined #GemRb
[22:56:26] <-- SiENcE has left IRC (Client Quit)
[23:00:17] --> edheldil_ has joined #GemRb
[23:04:55] --> unenana has joined #GemRb
[23:06:57] <-- unenana has left IRC (Client Quit)