#gemrb@irc.freenode.net logs for 19 Jul 2012 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage

[00:12:44] <-- brad_ has left IRC (Quit: brad_)
[01:12:43] <-- Drakkar has left IRC (Ping timeout: 264 seconds)
[01:13:36] --> brad_ has joined #gemrb
[01:18:25] --> Drakkar has joined #gemrb
[01:31:59] <-- |Cable| has left IRC (Remote host closed the connection)
[01:33:40] --> |Cable| has joined #gemrb
[01:48:50] <brad_> wjp, tomprince: any advice for this?
[01:48:51] <brad_> https://github.com/bradallred/gemrb/compare/font
[01:49:00] <brad_> specifically how to handle palette changes
[01:50:08] <brad_> i like the 100+ deleted lines of code, but i dont care for the seemingly inefficient options for setting palettes :(
[02:23:44] <-- brad_ has left IRC (Quit: brad_)
[02:50:55] <tomprince> I am less than thrilled at the de-constification.
[03:10:35] <tomprince> I'd rather clone the sprite and set the palette there.
[03:14:08] --> brad_ has joined #gemrb
[03:15:09] <brad_> tomprince: what exactly do you mean by "clone the sprite and set the palette there"?
[03:16:22] <tomprince> Rather than altering all the sprites stored in the Font, just clone them and set the palette on the clone, when you need to set the palette. That way you don't need to de-constify things.
[03:19:46] <brad_> what about performance?
[03:21:39] <brad_> what about passing a palette to the blitter?
[03:22:40] <tomprince> That I don't know.
[03:23:02] <tomprince> I'm not sure how font sprites interact with the blitter.
[03:23:21] <brad_> well usually they are BAM sprites
[03:23:27] <brad_> which are RLE
[03:25:25] <tomprince> If we are doing the blitting ourselves, with a BAM, then it shouldn't be too expensive. (But I haven't done measurements)
[03:25:46] <tomprince> (I bet pypy would optimize away the allocations, for example)
[03:26:01] <brad_> im mostly concerned about performance due to android. since performance htere is already sub-par
[03:27:40] <brad_> well i will try to benchmark what i have now vs that
[03:27:45] <brad_> tommorow tho
[03:30:21] <tomprince> I wonder if it would make sense to have a blitter that takes a palette.
[03:30:39] <brad_> well i thought it made sense
[03:30:47] <brad_> but then how would it work
[03:32:01] <brad_> it would be nice if SDL had a means to set the same palette for multiple surfaces
[03:33:31] <brad_> i remember this is the reason i hadnt done this back when i refactored the font system before :)
[03:46:48] <brad_> tomprince: if we did pass palette to the blitter then font wouldnt need to have any palette function
[03:47:50] <brad_> and we could re-const those functions. i don't exactly understand why that is important, but it will make you happy :D
[03:49:22] <tomprince> "mutation is evil" :)
[04:01:51] <brad_> well im leaning towards making the blitter take a palette. BAM blits seem to be done internally and take the palette directly. non BAM fonts (TTF) would be in the same boat we are in now, but thats a fringe case anyway
[04:03:42] <brad_> im just not sure the best way to handle those. guess keep track of the old palette, set the new palette, do the blit, then set palette back to old
[04:12:38] <-- Drakkar has left IRC (Ping timeout: 240 seconds)
[04:13:11] <-- brad_ has left IRC (Quit: brad_)
[04:17:02] --> Drakkar has joined #gemrb
[05:16:40] <-- Drakkar has left IRC (Ping timeout: 260 seconds)
[05:21:25] --> Drakkar has joined #gemrb
[05:25:26] <-- wrotek has left IRC (Ping timeout: 260 seconds)
[05:58:03] --> wrotek has joined #gemrb
[05:58:57] --> wrotek_ has joined #gemrb
[06:03:20] <-- wrotek has left IRC (Ping timeout: 260 seconds)
[06:48:24] --> Werner_ has joined #gemrb
[07:00:48] <-- Werner_ has left IRC (Quit: Page closed)
[07:02:23] --> lynxlynxlynx has joined #gemrb
[07:02:24] <-- lynxlynxlynx has left IRC (Changing host)
[07:02:24] --> lynxlynxlynx has joined #gemrb
[07:02:24] --- ChanServ gives channel operator status to lynxlynxlynx
[07:55:20] --> kettuz has joined #gemrb
[08:01:19] <-- Drakkar has left IRC (Ping timeout: 264 seconds)
[08:02:15] --> Drakkar has joined #gemrb
[08:45:34] <-- Drakkar has left IRC (Ping timeout: 276 seconds)
[08:54:58] --> Drakkar has joined #gemrb
[09:00:58] --> Yoshimo has joined #gemrb
[10:15:44] <-- Yoshimo has left IRC (Read error: Connection reset by peer)
[10:58:09] <-- kettuz has left IRC (Quit: Leaving)
[11:07:11] --> kettuz has joined #gemrb
[11:14:54] --> Yoshimo has joined #gemrb
[11:40:19] <-- lynxlynxlynx has left IRC (Ping timeout: 264 seconds)
[11:55:02] --> lynxlynxlynx has joined #gemrb
[11:55:03] <-- lynxlynxlynx has left IRC (Changing host)
[11:55:03] --> lynxlynxlynx has joined #gemrb
[11:55:03] --- ChanServ gives channel operator status to lynxlynxlynx
[12:10:05] <-- kida_laptop has left IRC (Ping timeout: 248 seconds)
[12:11:05] --> kida_laptop has joined #gemrb
[14:03:40] <-- kettuz has left IRC (Quit: Leaving)
[14:09:55] <-- wrotek_ has left IRC (Ping timeout: 276 seconds)
[15:03:06] --> brad_ has joined #gemrb
[15:03:29] <brad_> lynx: can you reproduce this on linux? http://sourceforge.net/tracker/?func=detail&aid=3545840&group_id=10122&atid=110122
[15:03:48] <brad_> I dont have BG1 installed, but I know the openal driver has had problems on mac before
[15:03:56] <brad_> i thought i fixed them all
[15:04:19] <brad_> also i thought i fixed this: http://sourceforge.net/tracker/?func=detail&aid=3545833&group_id=10122&atid=110122
[15:04:35] <brad_> was there a regression or does BG1 behave diffrentlly than BG2?
[15:05:24] <brad_> he has guienhancements off for some reason
[15:05:32] <brad_> does that effect the text scrolling?
[15:08:48] <brad_> how can i get a login for the bug tracker so i can follow up with these?
[15:09:46] <lynxlynxlynx> login to sf
[15:09:48] <brad_> im logged into SF but i cant seem to reply so i guess i need permissions
[15:09:55] <brad_> or im blind?
[15:10:26] <brad_> ah found it
[15:10:26] <lynxlynxlynx> the initials shouldn't be affected by guienhancements at all
[15:10:31] <brad_> ok
[15:10:38] <brad_> figured out how to comment :p
[15:10:57] <lynxlynxlynx> and re #1: which part are you talking about?
[15:11:07] <brad_> the missing sounds
[15:11:51] <lynxlynxlynx> probably all of those are just not implemented yet
[15:11:55] <brad_> ah
[15:12:08] <lynxlynxlynx> footsteps need an updated 2da table (was a straight copy from bg2 iirc)
[15:12:15] <brad_> i see
[15:47:56] --> kettuz has joined #gemrb
[15:49:14] <-- brad_ has left IRC (Quit: brad_)
[16:19:10] --> brad_ has joined #gemrb
[17:20:19] <wjp> are we missing anything for bg1 avatar shadows?
[17:22:06] <wjp> hm, browsing through the game resources I see there are some BAMs that look suspiciously like shadows: CSHD*
[17:22:38] <lynxlynxlynx> yes, avenger said those are the most common ones
[17:23:00] <lynxlynxlynx> some avatars already come with shadows iirc
[17:32:30] <-- lynxlynxlynx has left IRC (Remote host closed the connection)
[17:34:39] --> lynxlynxlynx has joined #gemrb
[17:34:40] <-- lynxlynxlynx has left IRC (Changing host)
[17:34:40] --> lynxlynxlynx has joined #gemrb
[17:34:40] --- ChanServ gives channel operator status to lynxlynxlynx
[17:35:29] --> wrotek has joined #gemrb
[18:15:21] --> Beholder has joined #gemrb
[18:15:25] <Beholder> hi all
[18:16:35] <Yoshimo> howdy
[18:20:12] <brad_> hi
[18:20:30] <brad_> does anybody know if resources keep their resrefs anywhere?
[18:20:45] <brad_> or if there is a way to get it some otherway
[18:23:21] <brad_> not even DataStream seems to know resref
[18:23:42] <brad_> it seems hacky to just chop the extension off the name :p
[18:33:30] <lynxlynxlynx> we don't need it anymore by then
[18:37:01] <brad_> im trying to use an AnimationFactory as the source for BAM fonts, but that requires a resref
[18:37:45] <brad_> BAMFontManager has no idea what resref was used to create it
[18:46:43] <lynxlynxlynx> what is so beneficial in AnimationFactory?
[18:47:47] <lynxlynxlynx> anyway, having an origin field could be handy elsewhere
[18:48:14] <brad_> well its related to a WIP branch i have where fonts use the sprite array they are constructed with instead of having a flat spritemap
[18:48:17] <lynxlynxlynx> you'll have to talk to tom if it's not there since nothing needed it or it was designed not to be needed
[18:48:47] <brad_> i was talking to tom last night about how to handle the palettes for the sprites
[18:49:08] <brad_> and that lead to exploring the possibility of passing the palette to the blitter
[18:49:27] <brad_> i thought that the BAM fonts were made of BAM sprites but that was foolish of me
[18:50:38] <brad_> we had be creating standard 8bit sprites and to get bam sprites would be easiest to get via AnimationManager
[18:51:11] <brad_> I hard coded it for resref NORMAL and it seems to work just fine so now im trying to figure out how to get the actual resref
[18:57:33] <brad_> if we could use that we could get rid of BAMImporter::GetFont and use a simple loop in BAMFontManager instead. its quite a bit less code and carries the benefit of having BAM sprites (i was told those are faster to blit or some such)
[19:00:49] <lynxlynxlynx> DataStream already has originalfile
[19:01:46] <lynxlynxlynx> if you're a friend, you could get it from any Resource
[19:13:15] <brad_> yeah, but originalfile is resref + ext. im fine with extracting resref that way, but others usually aren't :)
[19:14:37] <lynxlynxlynx> we assume 3 letter extensions elsewhere too, so it's fine by me
[19:15:13] <lynxlynxlynx> and not like people are used to naming files otherwise
[19:15:26] <brad_> ok
[19:27:37] --> kingron has joined #gemrb
[19:29:38] <wjp> I'm kind of wondering what that ResRef argument to BAMImporter::GetAnimationFactory() is actually used for
[19:31:33] <brad_> i was wondering that too
[19:32:56] <brad_> i mean its passed to animation factory constructor, but i dont know why that needds it
[19:33:28] <wjp> ah, right, the factory caching
[19:33:35] <brad_> ah caching
[19:33:58] <wjp> although that isn't triggered unless you get it via GameData
[19:34:46] <brad_> well it would certainly be nice if i could get the animationfactory without a resref
[19:35:19] <brad_> seeing as how that seems to be the only way of getting bam sprites
[19:40:58] <wjp> well, if you have the BAMImporter already, it shouldn't hurt to call GetAnimationFactory with an empty ResRef
[19:42:43] <wjp> just don't register it with Factory
[19:44:11] <tomprince> Well, Factory could be changed to be type-safe and use HashMap. And that would mean the objects wouldn't to store the resref.
[19:48:12] <wjp> that wouldn't change that you don't even know the resref to store it with in Factory, though
[19:48:38] <wjp> but I haven't quite finished tracing how these FontManagers work
[19:49:08] <tomprince> Factory is different than AnimationFactory. And only the former really needs to know the resref. The later does currently, due to the implementation of the former.
[19:49:43] <wjp> yes, but that still doesn't change that the code creating this AnimationFactory doesn't have the resref
[19:50:00] <wjp> it has a nameless BAMImporter
[19:50:20] <wjp> (see BAMFontManager)
[19:51:13] <tomprince> Yes, but if Factory is changed to use HashMap, then the key doesn't need to be stored in the object, hence AnimationFactory doesn't need to take the resref as an argument.
[19:51:50] <wjp> ah, you mean to avoid having to pass a dummy?
[19:52:09] <wjp> it would clean up that call, yes
[19:52:54] <brad_> i hadnt realize i could just pass a dummy. indeed :)
[19:54:13] <wjp> we could also quickly refactor things to have AddFactoryObject set the ResRef field
[19:55:23] <wjp> (as a preliminary step to potential Factory refactoring)
[20:30:08] <-- kingron has left IRC (Quit: Leaving)
[21:16:01] <-- Yoshimo has left IRC (Quit: Yoshimo)
[21:21:43] <brad_> hazah everything seems to work perfectly
[21:30:02] <-- Beholder has left #gemrb
[21:40:23] <brad_> lynx, tomprince, wjp: https://github.com/bradallred/gemrb/compare/font
[21:44:36] <lynxlynxlynx> nice cleanup
[21:44:52] <lynxlynxlynx> + int height = (*this)[tmp[i]]->Height; <-- things like this make me nervous though
[21:45:39] <brad_> why?
[21:47:14] <brad_> would you rather operator[](tmp[i])
[21:47:25] <tomprince> better to not use operator[]
[21:47:33] <brad_> i knew youd say that
[21:47:36] <brad_> :D
[21:48:14] <brad_> well aside from that?
[21:49:19] <lynxlynxlynx> at least put it in a function, so some of the nasty is hidden
[21:50:23] <lynxlynxlynx> i saw a similar pattern later, so it could make sense
[21:51:02] <brad_> ok
[21:51:44] <brad_> hmm i see some cleanup i need to do
[21:53:13] <brad_> oh i had a question about how to dispose of the animationmanager
[21:53:22] <brad_> do i need to worry about that?
[22:19:37] <tomprince> brad_: The reason for suggesting not using operator[] (but instead having another name) is that the syntax where you use it is ugly.
[22:20:52] <brad_> sure. i dont mind changing it. just give me the usual list of things that need to be done before i merge
[22:22:27] <-- kettuz has left IRC (Quit: Leaving)
[22:46:55] <CIA-31> GemRB: 03bradallred * rb00fe0171cc5 10gemrb/gemrb/plugins/SDLVideo/SDL20Video.cpp: Multitouch: fix triggering a mouse up event after scrolling the viewport and prevent very unlikely crash when focusCtrl is NULL.
[22:47:06] <CIA-31> GemRB: 03bradallred * r3869644dde65 10gemrb/apple/GemRB.xcodeproj/project.pbxproj: Xcode: fix SDLVideo.so not being copied to application bundle after build.
[23:08:41] <brad_> https://github.com/bradallred/gemrb/compare/font
[23:08:48] <brad_> ok i think its ready to merge
[23:18:32] <-- lynxlynxlynx has left IRC (Remote host closed the connection)
[23:50:42] --> joneirik has joined #gemrb
[23:53:24] <-- brad_ has left IRC (Quit: brad_)