| 02:28:29 | Fingolfin | joined |
| 06:00:16 | sweetlilm | joined |
| 06:12:38 | !sweetlilm | left |
| 07:39:00 | Fingolfin | left |
| 11:43:01 | waltervn | joined |
| 11:44:53 | waltervn | hi! |
| 11:59:25 | lskovlund | joined |
| 11:59:29 | lskovlund | hi! |
| 11:59:51 | lskovlund | Does anybody have the SVN repository path |
| 12:00:00 | lskovlund | or look it up for me, please? |
| 12:00:31 | waltervn | for stable? |
| 12:00:44 | lskovlund | both, please. |
| 12:00:59 | waltervn | stable: https://secure.a-eskwadraat.nl/svn/freesci/freesci/trunk |
| 12:02:22 | waltervn | glutton: https://secure.a-eskwadraat.nl/svn/freesci/freesci/branches/glutton |
| 12:03:19 | lskovlund | thanks! |
| 12:23:10 | waltervn | What version numbers will the releases be getting? |
| 12:26:06 | lskovlund | 0.3.5 and 0.6.2, I think. |
| 12:26:47 | Fingolfin | joined |
| 12:26:48 | lskovlund | Christoph and I discussed whether to discontinue Stable afterwards ... |
| 12:27:08 | lskovlund | he said it would be a good thing to backport the new sound system ... |
| 12:27:23 | lskovlund | but I don't really know what's left to keep afterwards. |
| 12:27:32 | lskovlund | "Good point", he replied. |
| 12:28:32 | Fingolfin | you mean stable as opposed to gluttong (sorry, are there logs for this channel?) |
| 12:28:36 | Fingolfin | Fingolfin goes back to lurking =) |
| 12:29:10 | lskovlund | yes. |
| 12:29:56 | waltervn | What do you mean by discontinue? |
| 12:30:10 | waltervn | Bugfixes only? |
| 12:32:32 | lskovlund | I mean "tell people to use Glutton instead" ... |
| 12:32:46 | lskovlund | Of, course no decision has been made. |
| 12:32:48 | waltervn | Then we have a lot of work to do... |
| 12:33:18 | lskovlund | You don't think we should do it, I gather... |
| 12:34:04 | waltervn | Not until we can get glutton to the level of stable when it comes to SCI0 games. |
| 12:35:23 | waltervn | I noticed several regressions while I wasn't even looking for them ;) |
| 12:42:21 | lskovlund | I'm going to need someone else's help writing the NEWS for 0.3.5 ... |
| 12:42:31 | lskovlund | I haven't had much to do with it. |
| 12:42:40 | weedar | joined |
| 12:53:42 | creichen | 'morning! |
| 12:54:55 | creichen | Yes, Walter's point pretty much goes to the core of the issue: While we don't really have enough people to maintain two branches, anorexia has many nonbugs that glutton is still missing. |
| 12:55:30 | creichen | lskovlund: What's the issue with the NEWS file? |
| 12:56:32 | lskovlund | It has to be updated for 0.3.5, which mostly other people than me have been working on. |
| 12:56:57 | lskovlund | The glutton version I can handle. |
| 12:59:40 | creichen | Well, I can do that one if you'd feel more comfortable with that... |
| 13:00:53 | lskovlund | Please do. |
| 13:02:32 | syke | hi! |
| 13:04:48 | lskovlund | hi Matt! |
| 13:05:33 | syke | creichen: discontinuing stable, I'd tend to agree with walter --until SCI0 games are as stable as stable, and people can save games, I don't think it's wise |
| 13:08:55 | syke | I'm going to do some palette stuf |
| 13:09:01 | syke | for KQ4 next, I think |
| 13:09:18 | syke | trying to get one in each series for maximum market penetration ;> |
| 13:09:37 | syke | first, I desparately need a haircut |
| 13:09:45 | syke | so I'll be back in an hour or so |
| 13:10:00 | TMM | joined |
| 13:10:30 | TMM | hi al |
| 13:10:44 | TMM | I thought you might like to see this: http://81.71.31.44/~hp/Image008.jpg |
| 13:10:45 | TMM | :) |
| 13:16:51 | syke | er |
| 13:16:55 | syke | LSL5 running on...? |
| 13:18:18 | TMM | PSP :) |
| 13:18:49 | TMM | and I wouldn't call it 'running' just yet |
| 13:18:53 | TMM | butm I'm getting there |
| 13:18:59 | syke | cool |
| 13:19:05 | syke | using freesci, presumably? |
| 13:19:10 | TMM | obviously |
| 13:19:22 | syke | just checking -- you may have written your own ;> |
| 13:19:32 | syke | did you have to change the code at all for PSP? |
| 13:19:32 | TMM | at some point I was considering it :) |
| 13:19:45 | TMM | some, dirent on psp is apparently pretty broken |
| 13:19:53 | TMM | sci_find_first get caught in a loop |
| 13:19:58 | syke | oopz |
| 13:20:26 | TMM | and, I had to disable sound |
| 13:20:52 | creichen | Cool! :-) |
| 13:20:53 | TMM | poor PSP can't deal with sound + video at the same time, that is some pretty darn inefficient code freesci got going there |
| 13:21:17 | syke | feel free to give us a patch to optimize it! :) |
| 13:21:19 | lskovlund | dirent: That is what we have #ifdef for... |
| 13:21:22 | creichen | I don't think we can integrate that into today's release, thogh ;-) |
| 13:21:31 | TMM | lol, this is glutton anyway |
| 13:21:38 | TMM | I'm not very interested in SCI0 games |
| 13:21:41 | TMM | they'll suck with OSK |
| 13:21:45 | waltervn | how fast is the PSP? |
| 13:21:57 | TMM | 266-333 mhz |
| 13:22:05 | waltervn | that should be fast enough for sound |
| 13:22:41 | TMM | the sound thread completly starves the rest of freesci |
| 13:22:44 | waltervn | You could try to switch the sound to something like 22khz mono |
| 13:22:50 | creichen | waltervn: Depends on the CPU, cache sizes etc. |
| 13:22:53 | TMM | uh... not op PSP |
| 13:23:05 | TMM | psp is 44100/16bits PERIOD :) |
| 13:23:06 | creichen | Well, OPL/2 emulation is inherently expensive... |
| 13:23:46 | lskovlund | which is why we have support for other devices ... |
| 13:24:01 | waltervn | You could output 22khz mono sound at 44100 with some processing |
| 13:24:03 | lskovlund | such as PC-speaker and 3--voice Tandy ;-> |
| 13:24:13 | TMM | and, I've learned from porting scummvm, that resampling is extremly expensive |
| 13:24:21 | creichen | Of course, the mixer also uses linear interpolation ATM, which uses lots of integer divisions. Eliminating that (using a hw mixer or using a software mixer w/o linear interpolation) would help on that end. |
| 13:24:45 | waltervn | Right, I forgot about the software mixer. |
| 13:24:51 | TMM | I'll try and write a psp specific sounddriver |
| 13:25:02 | creichen | TMM: Does the PSP have a hardware mixer? |
| 13:25:02 | TMM | I'm going to need a new input system anyway |
| 13:25:06 | TMM | yes, it does |
| 13:25:10 | TMM | 8 voice or something |
| 13:26:17 | TMM | but, as I've discovered, usually resampling is insanely expensive on PSP, as it doesn't have an fp unit |
| 13:26:27 | syke | jeezus christ |
| 13:26:31 | syke | you're joking |
| 13:26:32 | creichen | Mixer: great-- you might want to see if this can be implemented that as an "sfx_pcm_mixer_t". |
| 13:26:36 | TMM | and, resampling appears to be pretty float intensive |
| 13:26:52 | creichen | FP is only used for sine/cosine where requested by the games, not in the mixer. |
| 13:27:03 | creichen | Everything's done in integers. |
| 13:27:11 | creichen | (In the current software implementation.) |
| 13:27:21 | TMM | sound resampling as well? |
| 13:27:39 | creichen | If you try to implement the mixer, you might want to ask Walter for his experience with that-- I believe he looked into the same issue on the Dreamcast. |
| 13:28:04 | creichen | Resampling is done during mixing in our current setup, and yes. |
| 13:28:19 | Fingolfin | it's integer based in ScummVM, too |
| 13:28:28 | Fingolfin | but then we only do pretty crude resampling =) |
| 13:28:29 | TMM | btw, just out of curiousity, is freesci still using the super-rigid clean room method of reverse engineering? or are you guys a bit less rigid these days? |
| 13:28:36 | Fingolfin | the "good" resamplers I know all use floats in some way or another |
| 13:29:12 | TMM | Fingolfin, the resampling in scummvm still gives probles during mpeg2 playback, I'm still working on ripping out the overlays for the psp backend :) |
| 13:29:30 | Fingolfin | which overlays are you talking about? |
| 13:29:33 | TMM | Fingolfin, amongs other things, I think I put an outline of the problem on the psp forum a while back |
| 13:29:44 | TMM | Fingolfin, let me look it up |
| 13:29:47 | Fingolfin | Fingolfin doesn't read the PSP forums. Those are for PSP user discussion |
| 13:30:11 | Fingolfin | developer relevant problems should be discussed on #scummvm, or, if you want to reach all devs, on scummvm-devel |
| 13:30:22 | TMM | Fingolfin, http://forums.scummvm.org/viewtopic.php?p=4178&highlight=#4178 |
| 13:30:25 | Fingolfin | and/or by talking to the person(s) responsible for the relevant parts of ScummVM =) |
| 13:30:39 | TMM | Fingolfin, joostp is a personal friend of mine :) we talk about it a lot :P |
| 13:31:29 | creichen | Crude resampling: Our linear interpolation is fairly crude. However, PCM in the game we've mostly looked at so far have been of bad enough a quality that this wasn't really much of a worry... |
| 13:31:35 | Fingolfin | that's fine, what I meant is: don't expect anybody to act based on things you say in the forums =) |
| 13:31:45 | TMM | Fingolfin, I am acting on it :) |
| 13:31:49 | Fingolfin | creichen: same here |
| 13:32:09 | TMM | Fingolfin, I am apparently the only dev who cares about the cutscens on psp :) joostp sure as hell doesnt ;) |
| 13:32:27 | Fingolfin | TMM: we should contine this in #scummvm |
| 13:32:32 | TMM | yes |
| 13:32:35 | TMM | sorry freesci guys :) |
| 13:32:50 | syke | TMM: it's disappointing sometimes when developers disagree on what features, platforms, and games to support |
| 13:32:54 | creichen | TMM: We're still trying hard to be clean-room; we're not using disassembled source code or somesuch. At this point, our VM is significantly different from the Sierra one anyway, so attempting this wouldn't work except in isolated cases. |
| 13:33:01 | syke | especially if they aren't nice about it |
| 13:33:13 | TMM | they aren't unnice :) |
| 13:33:22 | TMM | joostp just doesn't care :) he doesn't mind me implementing it |
| 13:33:32 | syke | TMM: didn't say they were -- just making a general statement |
| 13:33:40 | creichen | Bah. Who cares about "Codename: Iceman". Did I ever tell you that I deliberately broke the parser so that it couldn't be completed? |
| 13:33:48 | syke | syke laughs |
| 13:34:12 | lskovlund | ;-> |
| 13:34:19 | syke | I dunno what they did in that game to make it so buggy for us |
| 13:34:28 | syke | you'd figure if qfg1 works, then CB1 would |
| 13:34:38 | TMM | I just wondered if it wouldn't be faster to just start with dissassembling scidhuv.exe from sierra, and reimplement that |
| 13:34:47 | TMM | it is how the gob backend for scummvm was done |
| 13:35:45 | syke | TMM: given that sierra forced several fan sites to take down community-created games and artwork, I don't think it makes sense to give them cannon fodder |
| 13:35:45 | creichen | TMM: Initially: Perhaps. But we didn't want to get into the legal issues related to that. |
| 13:35:50 | syke | besides, we are doing ok :) |
| 13:36:10 | syke | just need more developer time |
| 13:36:11 | lskovlund | for suitable values of ok. |
| 13:36:25 | syke | lskovlund: I didn't say 'good' or 'great' ;> |
| 13:36:26 | TMM | I'm in europe |
| 13:36:34 | TMM | would the 'rigid clean room' stuff still apply to me? |
| 13:36:56 | creichen | It's definitely a much slower process than the ScummVM approach. Personally, I still find it more enjoyable that way, but ymmv... |
| 13:37:10 | lskovlund | Our sound systems are quite different at this point ... |
| 13:37:26 | TMM | joostp and I where discussing just doing that, because we want lsl5 support :) |
| 13:37:34 | lskovlund | well, they do use sound iterators, but still. |
| 13:38:02 | creichen | They do? Dammit. I had already drafted up a paper on that for the International SCI Conference. Bloody related work. |
| 13:38:17 | lskovlund | lskovlund laughs |
| 13:38:19 | syke | TMM: one way that was very effective was to write unit tests in SCI Studio |
| 13:38:26 | syke | and then run them under FSCI and SSCI |
| 13:38:32 | syke | the tests wrote their output to a file |
| 13:38:45 | syke | and we just diffed the file between FSCI and several SSCI interpreter versions |
| 13:38:50 | creichen | TMM: I'm not sure about the legal situation in the EU ATM. (I ought to be, of course...) |
| 13:38:57 | syke | I think that fixed 3 or 4 bugs in one fell swoop |
| 13:39:06 | syke | (and probably others we didn't even know about) |
| 13:39:34 | creichen | TMM: The point is, if we start doing it the "hard" way, all people subject to US law might be screwed. |
| 13:39:44 | syke | SCI Studio is a great black-box revenging tool in that way ;> |
| 13:39:46 | creichen | (All that are involved with the project, that is.) |
| 13:40:04 | creichen | (Of course, you might argue that we're screwed because of US law anyway, but that's a different matter...) |
| 13:40:14 | syke | syke screws creichen |
| 13:40:15 | Fingolfin | Fingolfin thinks some big company should sponsore an International Game Emulator Conference, and give free invites (including hotel and traveling costs, of course :-) to ScummVM, FreeSCI, Exult, Dosbox etc. developers, damn it. I'd love to meet all these cool people I've been talking to for years :-) |
| 13:40:23 | syke | (with the US law, that is) |
| 13:40:27 | Fingolfin | including a hackathon session, of course |
| 13:40:36 | syke | heh |
| 13:40:40 | creichen | syke: ;-) |
| 13:40:51 | TMM | I am sure it is OK here |
| 13:40:55 | TMM | you should just all move |
| 13:40:56 | TMM | :) |
| 13:41:02 | syke | IV drip of glucose, venkamine, enzymatic b12, glutatione, selegeline.. |
| 13:41:03 | creichen | Fingolfin: Most indeed and certainly! :-) |
| 13:41:05 | TMM | if things change here, I swear to god, I'm moving to russia |
| 13:41:14 | syke | heh |
| 13:41:23 | syke | russia's not such a bad place, it seems |
| 13:41:26 | lskovlund | The DMCA does have an equivalent in Europe these days. |
| 13:41:38 | syke | on my last project, we had several programmers in minsk and it sounded nice |
| 13:41:40 | TMM | that still isn't pushed through |
| 13:41:43 | TMM | they are trying though |
| 13:41:48 | lskovlund | It's called the Infosoc directive (EUCD formally). |
| 13:43:35 | creichen | The political transformations going on in Russia leave me wondering, though... |
| 13:44:11 | creichen | TMM: I'd be happy to move back. Once I graduate and get a job offer, that is ;-> |
| 13:44:58 | lskovlund | creichen: I'm sure you can get a lot of offers for coding HTML :) |
| 13:45:05 | Fingolfin | creichen: move back to russia? |
| 13:45:22 | creichen | Fingolfin: Da. |
| 13:45:46 | creichen | lskovlund: It would appear that my statement was underconstrained ;-> |
| 13:46:18 | creichen | afk for ~20 minutes. |
| 13:46:24 | Fingolfin | creichen: didn't know you ever lived there. Can I visit you in your Datscha? :) |
| 13:47:40 | creichen | Fingolfin: I'm afraid that I only have secret underground lairs there... but of course you're more than welcome to look for them. |
| 13:47:44 | creichen | Really afk now. |
| 13:51:54 | TMM | sooo... how about porting freesci to scummvm? :) |
| 13:52:07 | TMM | I was talking about that with syke just a second ago |
| 13:52:25 | syke | as in, using the scummvm gfx and sound backends? |
| 13:52:29 | TMM | indeed |
| 13:52:45 | TMM | and, living in scummvm cvs, so, more devs will look at it, and, more people will know about the existance of freesci |
| 13:52:48 | syke | we'd have to make sure iterators and cues could be mapped to SCI's semantics |
| 13:53:02 | lskovlund | Well, as I understand it, we use the same OPL/2 emulator code. |
| 13:53:03 | TMM | and, I think freesci could stand some c++ lovin' |
| 13:53:04 | syke | but I think iMuse was fairly similar |
| 13:53:26 | syke | TMM: some parts, though in C, are semi-OO by the naming |
| 13:54:00 | lskovlund | syke: But I would say, those parts aren't exactly pretty either... |
| 13:54:06 | syke | sure ;> |
| 13:54:07 | TMM | wouldn't that be MORE reason to port to c++? |
| 13:54:29 | syke | TMM: sure -- I was just implying that :) |
| 13:54:38 | TMM | I really think it would be a good idea, for both scummvm and freesci |
| 13:54:41 | Fingolfin | we already were there, but split |
| 13:54:49 | Fingolfin | see http://scummvm.org/?shownews=archive#2004-04-02 |
| 13:54:59 | TMM | as long as noone is going to bitch about naming of the freesci+scummvm merger :) |
| 13:55:00 | lskovlund | lskovlund realizes that the Glutton README still only documents the old sound subsystem |
| 13:55:13 | Fingolfin | ScummSCI, of course! |
| 13:55:21 | TMM | lol |
| 13:55:22 | TMM | CABAL |
| 13:55:24 | lskovlund | FreeSCUMM |
| 13:55:31 | Fingolfin | no, FreeVM! |
| 13:55:33 | Fingolfin | morons! |
| 13:55:44 | TMM | please, people! |
| 13:55:54 | syke | moron? you're mother! |
| 13:55:55 | TMM | can noone see the POSSIBILITIES here? :) |
| 13:55:55 | syke | ;> |
| 13:55:59 | Fingolfin | and you still don't treat curly braces with the respect they deserve! |
| 13:56:02 | syke | TMM: we are all joking ;> |
| 13:56:07 | TMM | I know :) |
| 13:56:11 | TMM | but, we are degrading |
| 13:56:12 | TMM | :) |
| 13:56:12 | syke | haw |
| 13:56:24 | TMM | I am trying to convince people here!: ) |
| 13:56:32 | TMM | Fingolfin, be nice! :P |
| 13:56:41 | syke | I dunno, do people really need convincing? |
| 13:56:46 | lskovlund | You know, we should go with the flow and use C#/.NET :) |
| 13:56:47 | Fingolfin | we are already quite convinced that, despite how often people repeat it, it's not such a bright idea at all |
| 13:56:48 | TMM | I don't know either |
| 13:56:54 | syke | it seems like an okay idea to me, so long as we make sure it can be done well |
| 13:57:01 | TMM | Fingolfin, why wouldn't it be a bright idea? |
| 13:57:17 | TMM | freesci would get more devs and more ports, scummvm would get more engines |
| 13:57:18 | Fingolfin | we answered that a dozen times in the forums. Maybe we should add it to the FAQ, too =) |
| 13:57:26 | TMM | meh |
| 13:57:26 | Fingolfin | because you are vastly oversimplifying the matter |
| 13:57:31 | TMM | no, I am not :) |
| 13:57:49 | TMM | I understand that it is quite the undertaking |
| 13:57:50 | Fingolfin | Fingolfin searches for a the relevant forum threads, because he's tired of answering this again |
| 13:58:00 | TMM | but, I think that in the end it will be better for both projects |
| 13:58:16 | syke | Fingolfin: I'd be interested to know why it's not such a bright idea |
| 13:58:28 | syke | having worked on both projects, myself :) |
| 13:58:37 | TMM | I know I shouldn't have brought this up... |
| 13:58:51 | TMM | we can call it MAGE :) |
| 13:58:57 | TMM | Multi Adventure Game Emulator |
| 13:59:01 | TMM | we'd be sooo cool |
| 13:59:08 | syke | or |
| 13:59:16 | syke | Motherfuckers Are Gonna Eat |
| 13:59:29 | TMM | doesn't quite have the same ring to it |
| 14:02:25 | syke | anyways |
| 14:02:31 | syke | I'm gonna really go get my haircut now |
| 14:02:39 | syke | Fingolfin: I'd be interested to see URLs for the previous discussions |
| 14:02:40 | Fingolfin | I can#t find a posting which sums it up nicely, but: (1) The projects follow vastly different approaches both in REing and the backends (2) a merge first creates a lot of work before one can reap any benefit. In particular, people who think the FreeSCI folks are "lazy" or "inactive" won't see FreeSCI grow faster by giving them additional work. (3) nobody in the ScummVM project knows SCI, so we'd not really add anything to SCI |
| 14:02:40 | Fingolfin | initially, only maybe over time |
| 14:02:50 | Fingolfin | there are plenty of discussion on the old and new forum |
| 14:02:57 | Fingolfin | they just don't sum it up :-) |
| 14:03:07 | Fingolfin | go to http://forums.scummvm.org/search.php and search for FreeSCI |
| 14:03:08 | syke | heh ok |
| 14:03:17 | TMM | meh... I think the negatives are vastly less than the positives |
| 14:03:23 | Fingolfin | and starting by finding a name is, frankly, a bad way to go about it... :-) |
| 14:03:25 | TMM | say, someone else would do the initial merger |
| 14:03:28 | syke | I do see your point about work up front |
| 14:03:30 | Fingolfin | TMM: name the positives, then? |
| 14:03:43 | TMM | "freesci would get more devs and more ports, scummvm would get more engines" |
| 14:03:56 | syke | also, more opportunities for shared code |
| 14:04:03 | TMM | plus, freesci would potentially get _sev and cyx :) |
| 14:04:07 | Fingolfin | TMM: more devs? How so? Most engines in ScummVM only have a few devs, less than FreeSCI in fact. SCUMM is the only exception |
| 14:04:11 | syke | gfx drivers, sound drivers, filtering, game selection screens, etc |
| 14:04:50 | Fingolfin | TMM: not sure what it is about _sev and cyx that makes them particular interesting for freesci, but if you talk about REing -> that's the "different approach / philosophy" part |
| 14:05:02 | TMM | we could do away with that then :) |
| 14:05:20 | TMM | I don't think anyone is going to try and sue the pants off off scummvm |
| 14:05:35 | syke | TMM: famous last words ;> |
| 14:05:40 | TMM | Fingolfin, _sev and cyx are pretty damn good with IDA :) |
| 14:05:59 | Fingolfin | shared code -> yeah, so, FreeSCI would throw away everything and use our system which is quite different in many aspects... maybe some stuff could be incorporated over time... and you doN#t get more ports automagically, either. the SCI engine itself would have to be tuned for each port, too |
| 14:06:09 | syke | I think the revenging approach is the real crux, if there is one |
| 14:06:25 | Fingolfin | all in all: Sure, ScummVM wouldn't mind supporting AGI or SCI games, but I don't see so many gains for FreeSCI as you try to make it sound :-) |
| 14:07:13 | Fingolfin | TMM: you have no idea about the legal negotioations we are doing all the time, like, e.g. with SCUMM... don't be too sure about us not getting our pants sued off, right now it looks a bit scary |
| 14:07:42 | TMM | I thought most where settled pretty well? |
| 14:07:52 | syke | s/where/were |
| 14:08:03 | syke | ok, really gone now -- I'll be back in an hour or so |
| 14:08:10 | TMM | o well, I knew it was a bad idea to start this :) |
| 14:12:43 | creichen | Whee! CABAL's back! |
| 14:14:02 | lskovlund | bbl |
| 14:14:04 | lskovlund | left |
| 14:14:13 | TMM | what's so wrong about that? :) |
| 14:15:57 | Fingolfin | once again: I don't mind seeing SCI/AGI engines in ScummVM. I have no idea whether the FreeSCI or ScummVM backend system is better, either... I just know this: (1) ScummVM has no interest in moving to the FreeSCI one; (2) I don't want to use FreeSCI/Sarien code w/o consent by the authors; (3) the RE policy / philosopy is radically different, that may lead to conflicts, too. |
| 14:17:05 | TMM | I think it would be a good time to dump the strict RE policiy of freesci, I honestly think in the end, no one is going to care enough to defend SCI in court |
| 14:17:10 | Fingolfin | If you want to create e.g. a fork of FreeSCI as a plugin for ScummVM, and the FreeSCI devs are OK with that, fine by me... or if they want to join ScummVM, fine by me, too (I doN't have to do all the work, after all :-). I only know, I'd be reluctant to do that if I was a FreeSCi dev g |
| 14:17:21 | Fingolfin | TMM: it's not your ass, though :-) |
| 14:17:33 | TMM | if I start working on it, it will be my ass :) |
| 14:17:43 | Fingolfin | the FreeSCI devs might think differently about it, and that's perfectly understandable to me |
| 14:18:12 | Fingolfin | TMM: yeah, but not your ass alone. You can't say "I am willing to risk my ass, now creichen, you must risk yours" |
| 14:18:12 | TMM | sissies :) |
| 14:22:36 | creichen | TMM: For me personally, I don't see enough of a gain in switching the reverse engineering policy to risk getting kicked out of the country before finishing my degree (and no, I can't afford a decent lawyer, in case you're wondering.) |
| 14:22:54 | creichen | If this policy was to change, I would have to leave the project. Yes, I'm a coward like that. |
| 14:23:18 | TMM | :'( |
| 14:23:29 | TMM | this seems to be pretty unsolvable then :) |
| 14:26:46 | creichen | I'm less opposed to re-using the ScummVM backends, though, if (a) it is evident that we don't lose anything in the process, (b) there are volunteers to do this, and (c) all ports conclude that portability won't be lost by using whichever subset of C++ are used by the backends. |
| 14:27:00 | Fingolfin | creichen: I wouldn't call that "cowardice", though. Considering your legal situation, I'd call it "careful considertaion" :-) |
| 14:27:16 | TMM | I WOULD call it cowardice :D |
| 14:27:23 | TMM | not in creichen's face though |
| 14:27:25 | creichen | Fingolfin: Thanks... |
| 14:27:26 | creichen | creichen laughs |
| 14:28:19 | Fingolfin | TMM: really? what are you risking, then? |
| 14:28:42 | TMM | nothing :) I am in europe and insured against these types of things |
| 14:28:49 | Fingolfin | ah |
| 14:29:20 | Fingolfin | thought so |
| 14:29:37 | TMM | it does make reading the radgametool's fanmail more enjoyable |
| 14:29:48 | TMM | :) |
| 14:30:31 | TMM | besides that, I doubt vivendi is going to care about SCI |
| 14:30:39 | Fingolfin | creichen: the ScummVM backends are relatively conservative in their usage of C++. GCC 2.95 and MSVC 6 should be usable |
| 14:31:03 | TMM | they don't seem to care about the rest of sierra's stuff |
| 14:31:04 | TMM | :) |
| 14:31:19 | Fingolfin | TMM: you doubt it, but you have no proof, you haven't had any legal conversations with game developers, you never were threatened by their lawyers, and you seem to underestimate the viciousness of certeain companies, in particular, Viacom and Vivendi :-) |
| 14:31:31 | Fingolfin | Fingolfin recalls a lot of Sierra sites being forced to closed down |
| 14:31:53 | TMM | perhaps I should try and email vivendi about it? |
| 14:32:05 | Fingolfin | TMM: sure |
| 14:32:16 | Fingolfin | TMM: that's always a good idea |
| 14:35:46 | creichen | Fingolfin: That sounds good. I'd like at least Walter to double-check for Dreamcast and GP32 before committing to this, but it seems that we should expect success here. |
| 14:36:25 | creichen | Points (a) and (b) remain. What/where is your graphics/sound interface? |
| 14:36:31 | TMM | creichen, scummvm has gp32 and dc ports :) |
| 14:37:34 | Fingolfin | creichen: our GP32 port is a bit outdated, but a new GP2x port is in the work |
| 14:37:34 | creichen | TMM: IIRC we use a different toolchain for at least one of them, and Walter takes care of those ports, so I want to make sure that that won't break things elsewhere. |
| 14:38:17 | TMM | creichen, that sounds reasonable |
| 14:38:25 | Fingolfin | creichen: sound: the backends mainly provide an audio callback. Atop that sits our mixer, which provides MP3/VOrbis/FLAC support, and some other things. But it's seperate from the backends, so you could use your own mixing code, too |
| 14:38:37 | TMM | also, if this is to happen, I wouldn't mind doing a lot of the hard work at all |
| 14:38:49 | creichen | I can't personally commit to doing such a transition at this point, unfortunately. I took today and half of tomorrow off for FreeSCI, but that's not something I'll be able to do too often in the next three months. |
| 14:38:56 | creichen | TMM: That would be much appreciated. |
| 14:39:05 | Fingolfin | creichen: MIDI is available, too, including Adlib based MIDI emulation, and the MT-32 emu. Don't know enough about FreeSCI to know what your needs there are, though, so I can't say much more |
| 14:39:18 | Fingolfin | creichen: graphics: dunno, is there anything fancy you need, besides a framebuffer ? |
| 14:39:23 | creichen | Fingolfin: MT-32 would be nice. You don't include the ROMs, I hope? |
| 14:39:30 | Fingolfin | creichen: no of course not |
| 14:39:37 | creichen | Good. |
| 14:39:58 | Fingolfin | creichen: MT32 doesn't just mean the MT-32 emu, we also have switches to either use GM emulation of MT32, or to use a real MT-32 |
| 14:40:05 | creichen | Fingolfin: Actually, our backends don't really use a framebuffer per se... they provide primitive drawing operations (lines, pixmap crossblitting etc). |
| 14:40:11 | Fingolfin | Fingolfin has a real MT-32 with a USB-MIDI adapter on his mac and uses it for e.g. Monkey Island 2 |
| 14:40:15 | Fingolfin | ah |
| 14:40:30 | creichen | creichen left his MT-32 in Germany |
| 14:40:43 | Fingolfin | we also have some graphic primitives, but not so many at this point, because none of our engines needs them, but it should be trivial to add anything needed |
| 14:40:55 | creichen | How do you handle palettes? |
| 14:40:58 | waltervn | creichen: C++ shouldn't be much of a problem. Both DC and GP32 ports would need work as I believe the ScummVM ports use different toolchains. |
| 14:41:08 | Fingolfin | why do your backends use primitives? To make it possible for e.g. antialiased lines or hypothetical "vector based" backends? |
| 14:41:26 | TMM | I think most of SCI is vector based |
| 14:41:47 | TMM | or at least ,don't store bitmaps, but drawing parameters, like WMF :{ |
| 14:41:51 | TMM | :P |
| 14:41:52 | Fingolfin | creichen: there's a 256 color palette, you can specify 24 bit values for each. you can specify a seperate palette for the mouse, and there is some 16 bit color support, too, though limited (we'll expand that in the future) |
| 14:41:53 | creichen | Fingolfin: Antialiased lines, accellerated line drawing, that stuff. Turned out to be quite helpful back when I was testing on an SGI box over a 10 mbps ethernet line. |
| 14:42:03 | Fingolfin | creichen: not sure if you need anything special palette wise? |
| 14:42:11 | creichen | No, I don't think we'd need something fancy there. |
| 14:42:24 | creichen | Do you support high-resolution frame buffers and scaling? |
| 14:42:29 | TMM | or am I wrong ? |
| 14:42:32 | creichen | (high-resolution as in > 320x200) |
| 14:42:33 | Fingolfin | TMM: I know that SCI is vector based, just was wondering why to put this into backends, not atop them. Guess both approaches have their advantages :-) |
| 14:42:45 | Fingolfin | creichen: yeah to both |
| 14:42:50 | Fingolfin | creichen: some of our games are 640x480 |
| 14:42:54 | TMM | I think putting them on top of them would be more flexible :) |
| 14:43:01 | TMM | personally :) |
| 14:43:17 | creichen | TMM: Only background images are "vector" graphics, but we render them to a buffer anyway: They use flood filling, which doesn't scale very well if the image scales... |
| 14:43:20 | Fingolfin | creichen: we also have an aspect-ratio-corrector, and lots of scalers (advmame2x/3x, pixel scalers, hq2x/3x, etc.), and more can be plugged in |
| 14:43:34 | TMM | creichen, good point... |
| 14:43:55 | TMM | creichen, we could do smooth scaling for those cases? |
| 14:44:37 | creichen | TMM: Sure, but I prefer our present solution, which is a painful algorithm which happens to produce better results than that... |
| 14:45:39 | creichen | Fingolfin: Where's a good place to start looking for documentation of your graphics interface? |
| 14:45:50 | Fingolfin | sec |
| 14:46:27 | creichen | It seems that, at the very least, we can hook into it as a FreeSCI graphics driver. The rest of our graphics subsystem would remain unchanged. |
| 14:46:55 | creichen | I'm not sure if we can re-use more... we wouldn't need our own scalers anymore, though. |
| 14:46:57 | Fingolfin | creichen: http://scummvm.org/docs/doxygen/html/classOSystem.php |
| 14:47:01 | Fingolfin | creichen: under "graphics |
| 14:47:02 | Fingolfin | " |
| 14:47:41 | Fingolfin | creichen: I am afraid our documentation there is a bit thin, but so far it was enough for a lot of new engine / backend developers to use it. I always wanted to write more, and if people ever did as I ask them to (namely: to tell me which parts I should document better), I'd happily do it :-) |
| 14:47:55 | Fingolfin | but I think the graphics stuff is mostly very straight forward |
| 14:48:29 | creichen | Game graphics are always 8bpp? |
| 14:48:29 | Fingolfin | creichen: you should be able to fully ignore the "overlay" stuff, it's for 16bit / GUI stuff mostly |
| 14:48:44 | Fingolfin | creichen: at this point, yes. We are planing to revise that soon, though |
| 14:48:44 | TMM | ahhh... scummvm overlays |
| 14:48:49 | TMM | TMM cringes and dies |
| 14:49:16 | Fingolfin | the overlay is (ab)used for 16bit stuff, like MPEG2 video, but it wasn't meant for that. It was meant as an overlay. And despite TMM, it works quite well for that |
| 14:49:29 | creichen | OK. |
| 14:49:34 | Fingolfin | creichen: I assume 16bit is used by FreeSCI for improved vector rendering? |
| 14:49:56 | TMM | lol |
| 14:50:21 | creichen | Not quite. We allow each image to have its own palette, and background images are subjected to antialiasing after being translated from 8bpp to whatever format the backend expects. |
| 14:50:34 | Fingolfin | the main reasons I haven't looked deeper into 16bit game support yet is that (a) it's not really needed, (b) it's not fully clear to me how to "best" abstract it, and (c) I don't want to loose efficency on palette handling, in particular, palette color rotation |
| 14:50:41 | Fingolfin | ok |
| 14:50:50 | Fingolfin | creichen: that's what I imagined, more or less |
| 14:51:13 | creichen | But we haven't found a good solution of how to integrate this with palettes without requiring full redraws, at this point. |
| 14:51:55 | Fingolfin | that's part of my problem :-). Our SDL backend actually has code to detect which parts of an image changed. This actually helps some of the game that try to do fullscreen updates |
| 14:52:14 | Fingolfin | at first, when I learned about that, I thought: "how can it be faster, you need to look at the memory anyway?" |
| 14:52:31 | TMM | and borkes on PSP for black for some reason :) (or, should I say, colour '0') |
| 14:52:33 | creichen | Well, you can keep bounds... |
| 14:52:41 | Fingolfin | but when you consider that the data has to be scaled, converted, massaged back and forth and then transfered to the graphics card, it actually makes sense :-) |
| 14:52:51 | Fingolfin | we also use dirty rects |
| 14:53:02 | Fingolfin | but e.g. palette changes potentially invalidate the whole screen |
| 14:53:32 | TMM | TMM is desperatly trying to add something to the conversation, and is failing |
| 14:53:36 | Fingolfin | it's up to backends whether they record dirty rect information, compute changed regions some other way, or just blit everything |
| 14:53:43 | creichen | Right. But if you draw (as opposed to palletise) rarely and/or keep information about the views you draw, you can make good assumptions about the areas you need to re-draw. |
| 14:54:16 | creichen | Hang on, I think I have to get going now. It'll be quick, though, I'll be back in ~15 minutes. |
| 14:54:20 | Fingolfin | aye. but for fully bitmap based games (read: all games we support in ScummVM :-), this isn't easily possible |
| 14:54:27 | Fingolfin | creichen: no worries :-) |
| 15:14:26 | creichen | back. |
| 15:14:48 | creichen | Is your framebuffer 8 bit then, or is it merely the interface you're exporting that expects 8 bit input? |
| 15:18:43 | creichen | Fingolfin: Actually, it is. You only need a 32 byte wide summary mask listing all the colours used by the pixmaps, and 256 "region summaries" (e.g. bounding rectangles) for bigger things, e.g. background images. Then you already save some time when updating. |
| 15:19:02 | creichen | "region summaries" can be more complex than that, of course, such as sets of nonoverlapping bounding rectangles. |
| 15:20:07 | TMM | creichen, i am not really too authorative on this, but, from what I gathered, Osystem itself is 8bit, all the interfaces are anyway |
| 15:20:14 | creichen | OK... |
| 15:20:21 | Fingolfin | creichen: yeah, but that approach is only "logical" if your image is easyily separated into logical "regions". For SCUMM games, you have one big pixel background. So you'd first ahve to implement a clever algorithm to subdivide it into blocks usable by your scheme :-) |
| 15:20:46 | Fingolfin | creichen: anyway, again, this is all hidden in the backend API -- a backend could do what you say, and a backend can also use 16 bit framebuffers internally |
| 15:20:46 | creichen | Fingolfin: Quite true, but you can come up with an algorithm that does so in one pass. |
| 15:20:54 | Fingolfin | creichen: in fact the SDl backend uses a 16 bit buffer internally, too |
| 15:21:15 | creichen | Interesting... but I still don't quite see how that works. |
| 15:21:30 | creichen | Assume that I do a scaled blit of some image with a filter. |
| 15:21:36 | TMM | Fingolfin, how much work would be required to expand Osystem to support 16bit internally? |
| 15:21:52 | creichen | Then the filter may translate two nearby colours into some intermediate colour. |
| 15:22:21 | creichen | But if I was to later change the palette, the appropriate colour index would have to be recovered... you'd need an additional 8 bit map (or somesuch) to recover the pixels affected by this. |
| 15:22:24 | Fingolfin | creichen: well, the algo used in the SDL backend works like this: First convert the whole 8 bit data to 16 bit (possibly limited to a few dirty rects). Then, compare, in one pass, to the old image. Compute new changed blocks from that. Then, upscale and transfer to the screen only the changed parts. Clearly, with more precomputed knowledge, as you explain it, this could be done even better... and it would be possible to change t |
| 15:22:24 | Fingolfin | he SDL backend (or others) to do just that, too, if somebody is interested :-) |
| 15:22:36 | TMM | Fingolfin, I mean, we could go entirely the other way around, make Osystem 16 bit, and provide a flag to downscale to 8bit if the target backend is so inclided? |
| 15:22:46 | Fingolfin | creichen: ah we have a misunderstanding |
| 15:22:53 | Fingolfin | creichen: no, we do not support scaled blits at this point |
| 15:22:56 | creichen | That's what I was hoping yuou'd say. |
| 15:22:59 | creichen | Oh. |
| 15:23:03 | Fingolfin | creichen: :-/ |
| 15:23:07 | creichen | That was not what I was hoping you'd say. |
| 15:23:10 | Fingolfin | creichen: I see now your point :-) |
| 15:23:14 | Fingolfin | hehe |
| 15:23:30 | Fingolfin | so far, scaling support for blits wasn't needed for anything, and wasn't useful for anything |
| 15:23:31 | creichen | But there are SCUMM games that do scaling for their pixmaps, right? |
| 15:23:39 | Fingolfin | creichen: not that I am aware of |
| 15:23:39 | TMM | Fingolfin, also note that that scheme sometimes gives small graphical glitches in bs1 :( |
| 15:23:56 | Fingolfin | creichen: the costumes (=actors) are scaled, but before they ever reach the backend |
| 15:24:02 | creichen | Oh... OK. |
| 15:24:30 | Fingolfin | the SCUMM developers had a special codec to allow multiple versions of the costume to "blend" into each other, roughly said |
| 15:24:58 | creichen | Sounds a bit like "trilinear filtering"... |
| 15:25:01 | Fingolfin | TMM: the implementation isn't quite as good as it should be. Rewriting it has been on my TODO list for some time :-) |
| 15:25:17 | Fingolfin | creichen: not really, it's more of a "drop scanlines" approach =) |
| 15:25:25 | Fingolfin | anyway |
| 15:25:27 | creichen | OK. |
| 15:26:05 | creichen | So... to summarise: I believe that we can use your backend mechanism, as a regular FreeSCI gfx backend (though I didn't check all details). |
| 15:26:22 | Fingolfin | adding a scaled blitter API wouldn't be a major issue. Thinking about it, it might even be nice to provide higher quality SCUMM actor rendering, at least hypothetically, though I am not quite sure how to combine this cleanly with palette rotation :-) |
| 15:26:38 | TMM | I think comi would benefit from this |
| 15:26:39 | creichen | In comparison to existing backends, it's better because it always provides palette support, and worse because it never provides more than 8 bit palette mode support. |
| 15:26:50 | Fingolfin | creichen: are there docs on what a FreeSCI backend needs to do somewhere? |
| 15:26:56 | Fingolfin | hehe |
| 15:27:31 | Fingolfin | creichen: the "more than 8 bit" stuff is achieved by the scaled blits / graphics primitives? or is there anything else that "directly" makes use of it? |
| 15:29:20 | creichen | Fingolfin: The header file is meant to be the full documentation. Try http://www-plan.cs.colorado.edu/creichen/gfx_driver.h |
| 15:29:33 | Fingolfin | thx |
| 15:29:45 | creichen | Sure... thanks for looking into this! |
| 15:30:05 | creichen | Fingolfin: More than 8 bit is not needed for anything, of course. It's used by the following: |
| 15:30:05 | Fingolfin | GFX_CAPABILITY_MOUSE_POINTER etc. are capability flags, I take it? This particular one means the backend can render a mouse cursor? |
| 15:30:16 | creichen | Yes, precisely. |
| 15:30:30 | creichen | Backends can choose not to support these, then they're emulated by the engine above. |
| 15:30:45 | Fingolfin | I meant "needed" as in "needed for special extra features" :-) |
| 15:30:47 | creichen | (a) Antialiased background images |
| 15:31:24 | creichen | (b) Per-resource palettes (still possible in SCI0, though the requested colours would only be approximated, but very dangerous in SCI1) |
| 15:31:51 | Fingolfin | dangerous? |
| 15:31:54 | creichen | Yes. |
| 15:32:00 | creichen | Additional colours might be allocated. |
| 15:32:13 | creichen | Which might result in the rest of the scene being rendered in a sub-optimal fashion. |
| 15:32:38 | creichen | (When we're out of colours, we grab the colour closest to the one that was requested.) |
| 15:33:31 | creichen | Furthermore, it seems that transparent dropshadows (done by having nontrivial "alpha" values for rectangle draws) wouldn't be supported in an 8 bit buffer. |
| 15:34:22 | creichen | (c) Some extensions we've been talking about recently (more fancy per-resource customisation, effectively) but haven't actually implemented also would not work. |
| 15:34:22 | Fingolfin | color grabbing only applies for palette graphics, though, no? |
| 15:34:24 | Fingolfin | is GFX_CAPABILITY_PIXMAP_GRABBING used for anything besides mouse cursor emulation? |
| 15:34:32 | creichen | No. |
| 15:34:44 | creichen | It used to be used for screenshots, but we don't support those ATM. |
| 15:35:08 | creichen | (d) Filtered images. |
| 15:35:09 | Fingolfin | in ScummVM screenshots are something backends do internally (at this time at least :-) |
| 15:35:53 | Fingolfin | are "stippled lines" "gestrichelte Linien" ? :-) |
| 15:36:07 | waltervn | Does all this talk mean we're going to seriously consider a merge? |
| 15:36:09 | creichen | To understand point (d): Note that if we use scaled background images (for nicer pictures), we have to scale the views (what you'd probably call costumes) ourselves before they reach the backend... |
| 15:36:17 | creichen | Fingolfin: Yes, precisely ;-) |
| 15:36:27 | joostp | left |
| 15:36:37 | creichen | creichen also had to look it up back when he wrote that part... |
| 15:36:37 | Fingolfin | waltervn: not really, more like considering to share the backend code, at least partially, I'd say |
| 15:37:05 | creichen | No CABAL, I'm afraid ;-) |
| 15:37:29 | Fingolfin | and in any case, right now it's mostly creichen and me talking ;-) |
| 15:37:46 | waltervn | I understand that, but still... ;) |
| 15:38:09 | TMM | nonononono |
| 15:38:11 | TMM | we DO want CABAL |
| 15:38:18 | Fingolfin | err |
| 15:38:18 | TMM | keep going |
| 15:38:19 | TMM | :) |
| 15:38:34 | Fingolfin | could we all please stop using the word "we" as long as it's not clear who "we" is in each case? ._) |
| 15:39:08 | creichen | Yep. We should do that. |
| 15:39:26 | TMM | ok |
| 15:39:33 | TMM | 'we' being 'TMM' |
| 15:39:38 | TMM | but 'we' sounds more convincing |
| 15:39:41 | creichen | We is not amused. |
| 15:39:48 | TMM | actually we are |
| 15:39:52 | TMM | :) |
| 15:40:04 | TMM | ok, I'll shut up now |
| 15:40:20 | TMM | btw, I have a moving mousecursor for freesci on psp now, it actually works |
| 15:40:24 | TMM | now lsl5 intro crashes :) |
| 15:40:42 | TMM | to highlight that besides bitching, I am actually doing something useful as well :) |
| 15:41:21 | joostp | joined |
| 15:43:08 | Fingolfin | uh, you mean, bitchig on its own isn't useful ????? |
| 15:43:15 | Fingolfin | damn |
| 15:43:17 | TMM | well |
| 15:43:23 | TMM | not as much as I'd like it to be :) |
| 15:51:59 | TMM | continue!! :) |
| 15:59:06 | TMM | Fingolfin, you did something useful while bitching as well? :) |
| 15:59:11 | TMM | Fingolfin, damn you! :) |
| 16:00:07 | TMM | creichen, do you know if freesci opens all the resource files, or does it open and close them as needed? |
| 16:01:32 | creichen | TMM: Stable opens/reads all of them. Glutton opens them on-demand and caches the most recently used resources (and resources which have been requested to be retained) after decompression. |
| 16:02:24 | TMM | is there a define somewhere on how many it can cache? |
| 16:02:27 | creichen | If you're noticing lots of memory being used: The graphics subsystem caches the filtered images to be able to crossblit them in the format native to the underlying platform. That takes up some memory. |
| 16:02:43 | TMM | we have about 16 megs |
| 16:02:49 | TMM | that should be enough I think |
| 16:03:01 | creichen | Unless you're doing high-res graphics, it should be. |
| 16:03:04 | TMM | the problem is that PSP won't open more than 8 files, after that it just returns NULL pointers |
| 16:03:21 | Fingolfin | creichen: what is GFX_CAPABILITY_FINE_LINES good for? I would have thought drawing 1 pixel lines is easier than drawing thicker lines... ? |
| 16:03:24 | TMM | -EFAULT would be too obvious I think |
| 16:04:53 | creichen | TMM: SCI games may do their own file opening... not sure if this is what's biting you. Are you sure its files that are causing the problem? I don't personally know how well LSL5 works on other platforms... |
| 16:05:31 | creichen | Fingolfin: True, in retrospect, it was not a wise decision. |
| 16:06:10 | TMM | LSL5 crashes during the intro, right after patty walks into the screen and the 'P' of the game name is drawn |
| 16:06:46 | TMM | according to my debugging experience with PSP that usually means that something tries to open too many files, my fileopencounter on PC shows 94 files open during load... :! |
| 16:06:59 | TMM | but, a lot of that is X related |
| 16:07:43 | creichen | It is possible that we're leaking file descriptors, or deliberately keeping files open. |
| 16:07:54 | Fingolfin | creichen: dunno how wise it is, I am just surprised / wondering about the semantics :-) |
| 16:07:59 | TMM | PSP does not want more than 8 file descriptors :) |
| 16:08:08 | TMM | I'll try and debug a bit more |
| 16:08:36 | Fingolfin | draw_filled_rect does "shading" -- does that mean it blends from color 1 to color 2? in which direction? |
| 16:09:11 | TMM | rand() |
| 16:09:11 | TMM | ;) |
| 16:11:56 | creichen | GFX_SHADE_FLAT, / Don't shade / |
| 16:12:01 | creichen | GFX_SHADE_VERTICALLY, / Shade vertically / |
| 16:12:07 | creichen | GFX_SHADE_HORIZONTALLY / Shade horizontally / |
| 16:12:11 | creichen | But it doesn't specify the direction... |
| 16:12:20 | creichen | IIRC colour 1 is top or left. |
| 16:12:46 | creichen | The graphics test program illustrates this, though... |
| 16:15:13 | Fingolfin | ah |
| 16:16:09 | Fingolfin | BTW, we already have an "image registry" similar to your pixmap registry, at least in some ways, but "above" the backend |
| 16:16:32 | Fingolfin | and we also use blended rects & line drawing, though only for the GUI. |
| 16:16:51 | Fingolfin | just comparing things here, mind you :-) |
| 16:17:33 | Fingolfin | the event/sleep/palette/mouse APIs seems similar enough :-). FreeSCI uses multiple graphic buffers, though |
| 16:17:38 | Fingolfin | it seems to me, at least |
| 16:18:34 | lskovlund | joined |
| 16:18:40 | lskovlund | back |
| 16:21:25 | creichen | wb! |
| 16:22:00 | creichen | Fingolfin: Yes, we are. Some of the burden for these buffers is pushed off to the drivers, in the hopes that they might implement blitting between the buffers more efficiently than we could do it. |
| 16:22:21 | creichen | Not sure how much of a difference that makes in practice, though... I'm sure that it has been a bit of a pain for some drivers... |
| 16:22:39 | creichen | lskovlund: What should we do with the stable NEWS file, then? |
| 16:23:05 | lskovlund | Fingolfin: Since I'm barging into this conversation, I'd mention that the widget-based backend of ours is starting to cause trouble with e.g. inventory windows in SCI1. |
| 16:23:50 | lskovlund | creichen: The GP32 port is new, isn't it? That's about the only thing I know I recall... |
| 16:23:51 | creichen | From the POV of our previous discussion, it's more of an IR than a backend, though... it is a backend from the POV of the SCI VM, though. |
| 16:24:05 | lskovlund | IR? |
| 16:24:53 | waltervn | What about the game selection screen? Or was that in 0.3.4c already. |
| 16:25:11 | creichen | Right, but we added the game selection screen, added full support for Show(), significantly sped up pic drawing, and added version number auto detection from executables. |
| 16:25:28 | creichen | IR = Intermediate Representation. |
| 16:25:40 | creichen | IR :> IL |
| 16:26:10 | syke|haircut | back |
| 16:26:18 | creichen | wb, haircutt! |
| 16:26:23 | creichen | s/haircutt/syke/ |
| 16:26:32 | creichen | s/syke/Matt/ |
| 16:26:35 | TMM | syke, slick haircut man! |
| 16:26:46 | lskovlund | Yes, which required me to give an explicit version number to Walter yesterday, incidentally :) |
| 16:27:59 | creichen | Ah... that's because of the over-relaxation on the glutton side? IIRC, stable still does the knee-jerk FSM, though. |
| 16:28:26 | lskovlund | No, there are just misleading numbers in some of the EXEs. |
| 16:29:44 | creichen | creichen commits some changes to glutton |
| 16:30:27 | TMM | just out of curiousity how diverse are the sci1 games? when it comes to interpreters? |
| 16:31:43 | lskovlund | knee-jerk FSM? |
| 16:32:15 | lskovlund | You call the stable VM that? :/ |
| 16:33:45 | creichen | lskovlund: I meant the version number acceptor automaton... |
| 16:34:41 | waltervn | I'm afraid I won't be able to get the DC, GP32 and BeOS ports ready today. |
| 16:38:00 | creichen | Hm. MVI detection is broken. |
| 16:38:05 | Fingolfin | lskovlund: what is the "widget-based backend"? i.e. what precisely is a "widget" in your terminology? |
| 16:38:16 | lskovlund | re "we": Some languages distinguish first person inclusive from first person exclusive. Useful in this case I'd say... |
| 16:38:40 | lskovlund | (including/excluding the listener, that is) |
| 16:38:57 | syke | TMM: fairly diverse |
| 16:39:14 | TMM | syke, could you elaborate a bit more? :) |
| 16:39:18 | lskovlund | Fingolfin: The "primitive operations" backend Christoph referred to. |
| 16:39:23 | syke | especially near the end when it was all on the PC and they didn't give a fuck about having a common VM for multi-platofrm deployment |
| 16:39:37 | syke | the real bitch is that the differences can be fairly subtle |
| 16:40:01 | syke | (in implementation, but not as far as causing bugs) |
| 16:40:13 | lskovlund | But many of these things are detectable, as the 0.6.2 development shows. |
| 16:40:34 | syke | TMM: there are also a fuckton of valgrind warnings in the code. if the PSP is more sensitive to memory corruption, that may be it |
| 16:40:40 | syke | lskovlund: true |
| 16:40:51 | waltervn | I'll be off now. If the release happens today I'll just release the ports later. Night all. |
| 16:40:59 | TMM | syke, say, you've got a working lsl5 sci implementation, would it be a lot of work to get, say, lsl1vga working on it? |
| 16:41:21 | syke | TMM: lsl1vga does work on it. lsl1vga may be beatable -- I got pretty far in it |
| 16:41:30 | syke | you just have to learn how to work around the pathfinding bugs first ;> |
| 16:41:42 | syke | lskovlund: the pathfinding algorithm is the patented one, right? |
| 16:41:51 | TMM | nooo |
| 16:41:54 | TMM | you are fucking kidding |
| 16:41:57 | TMM | you are |
| 16:41:59 | syke | nope |
| 16:42:02 | TMM | ... |
| 16:42:05 | TMM | wtf |
| 16:42:08 | TMM | seriously? |
| 16:42:31 | syke | it was a big deal -- lars, christoph, and I had more time that usual over the course of a few weeks |
| 16:42:47 | syke | and I was able to find the blocking issues and they were able to remove them |
| 16:43:01 | syke | yes, seriously |
| 16:43:05 | lskovlund | syke: Yes. Walter is working on an independent implementation, I've recently learned. |
| 16:43:06 | syke | are you high? ;> |
| 16:43:07 | TMM | holy ..... |
| 16:43:14 | syke | lskovlund: awesome! |
| 16:43:18 | TMM | I am not high, but I am wondering if you are |
| 16:43:23 | TMM | ;) |
| 16:44:00 | syke | you can't get too far in LSL5 without debugger magic, but lsl1vga works much better |
| 16:44:02 | syke | weird, huh? ;> |
| 16:44:08 | syke | also, jones in the fast lane is "beatable" |
| 16:44:50 | syke | I forget where KQ5 was, last we left it |
| 16:44:54 | syke | or SQ4 for that matter |
| 16:45:02 | syke | but things are coming along, slowly but surely :) |
| 16:45:13 | TMM | I was wondering, how far one would get with a working lsl5 interpreter if one would not base it on freesci :) |
| 16:47:33 | syke | I dunno, if you were good at reversing and didn't care about maintenance |
| 16:47:38 | syke | it might take a couple of months |
| 16:48:04 | lskovlund | TMM: re lsl5: That actually looks like an interpreter hang of sorts, not an I/O problem. |
| 16:48:40 | TMM | lskovlund, that doesn't happen op pc |
| 16:49:09 | lskovlund | re reimplementation: You'd have to at least parse and use the selector list to get any sort of code re-use. |
| 16:49:23 | lskovlund | Or you'd be stuck compiling a version for each game. :( |
| 16:49:37 | TMM | actuallty it does... |
| 16:49:38 | TMM | fuck me |
| 16:49:49 | syke | lskovlund: he said 'just' lsl5, though |
| 16:50:02 | TMM | [KERN] Could not determine type of ref 002f:0000; failing signature check |
| 16:50:02 | TMM | [VM] Invalid arguments to kernel call 1 |
| 16:50:22 | lskovlund | creichen: GC issue? |
| 16:50:37 | TMM | I forget I skipped the intro on PC |
| 16:50:37 | TMM | :) |
| 16:50:49 | lskovlund | TMM: Could you do a 'segtable' from the console? |
| 16:50:59 | lskovlund | and tell us what it says about segment 0x2f? |
| 16:51:09 | TMM | sure |
| 16:51:12 | lskovlund | (don't give us the whole thing, please) |
| 16:51:13 | TMM | if you tell me how to go about that |
| 16:51:24 | TMM | because I have no idea what you are talking about |
| 16:51:24 | TMM | :) |
| 16:52:02 | lskovlund | when it gives you the error and dumps you to the console, type 'segtable'... |
| 16:52:15 | lskovlund | look through the results for segment 002f... |
| 16:52:21 | lskovlund | and tell us. |
| 16:52:46 | TMM | it doesn't dump me to a console... :( |
| 16:53:01 | syke | huh. I just read that Vivendi backed off from the team making King's Quest IX |
| 16:53:02 | TMM | On-screen console disabled and driver claims not to support windowed mode. |
| 16:53:14 | syke | and just asked them to not use the trademark (King's Quest) |
| 16:53:18 | lskovlund | shit |
| 16:53:29 | lskovlund | TMM: what platform are you on? |
| 16:54:04 | TMM | linux |
| 16:54:10 | TMM | SDL driver |
| 16:54:36 | TMM | note, that this is a 'port' of my psp version back to PC |
| 16:54:47 | lskovlund | Could you try with -g xlib, please? |
| 16:54:54 | TMM | sure |
| 16:54:56 | lskovlund | that should give you a working console |
| 16:55:00 | TMM | let me recompile :) |
| 16:55:16 | lskovlund | you don't need to recompile for that, that's the point |
| 16:55:32 | TMM | actually |
| 16:55:33 | TMM | I do |
| 16:55:51 | TMM | I can't give command line params on PSP |
| 16:55:54 | TMM | that is the point :) |
| 16:56:29 | lskovlund | you could also recompile of course, and use --with-console |
| 16:56:43 | TMM | I have to recompile |
| 16:56:47 | TMM | because my version doesn't have X support |
| 16:56:56 | TMM | since, last time I checked, psp doesn't run X :) |
| 16:57:06 | lskovlund | --with-console gives you console support on SDL. |
| 16:58:01 | TMM | ok, I got a console |
| 16:58:17 | TMM | segtable |
| 16:58:46 | TMM | [002f] S script.956 l:4 seg_ID = 956 |
| 16:59:03 | lskovlund | that's not a clone segment :/ |
| 16:59:12 | TMM | just as I suspected |
| 16:59:14 | TMM | ... |
| 16:59:17 | TMM | wtf are you talking about? :) |
| 17:00:11 | lskovlund | I thought it was a GC bug.. |
| 17:00:35 | lskovlund | which would imply the offending segment being one where things are actually allocated and deallocated frequently. |
| 17:00:53 | lskovlund | which is not the case. |
| 17:00:56 | TMM | I still have the console open, is there anything else I can do? |
| 17:01:13 | lskovlund | a backtrace? 'bt' |
| 17:01:29 | TMM | the whole shebang? |
| 17:01:35 | lskovlund | yes, please. |
| 17:01:40 | TMM | Call stack (current base: 0x0): |
| 17:01:40 | TMM | 0:[ffffffff] LSL5::play() |
| 17:01:40 | TMM | obj@0001:0ec4 pc=000b:02ee sp=ST:0000 fp=ST:0000 argp:ST:0001 |
| 17:01:40 | TMM | 1:[0] LSL5::doit() |
| 17:01:40 | TMM | obj@0001:0ec4 pc=0001:05eb sp=ST:0002 fp=ST:0002 argp:ST:0001 |
| 17:01:41 | TMM | 2:[1] Game::doit() |
| 17:01:43 | TMM | obj@0001:0ec4 pc=000b:0562 sp=ST:0006 fp=ST:0004 argp:ST:0003 |
| 17:01:45 | TMM | 3:[2] regions::eachElementDo(0000:003c) |
| 17:01:47 | TMM | obj@000b:0134 pc=0004:0325 sp=ST:000c fp=ST:0009 argp:ST:0007 |
| 17:01:49 | TMM | 4:[3] rm100::doit() |
| 17:01:51 | TMM | obj@002b:0164 pc=0014:0234 sp=ST:000f fp=ST:000e argp:ST:000d |
| 17:01:53 | TMM | 5:[4] sCartoon::doit() |
| 17:01:57 | TMM | obj@002b:04cc pc=002b:01ac sp=ST:0011 fp=ST:0011 argp:ST:0010 |
| 17:01:59 | TMM | 6:[5] Script::doit() |
| 17:02:03 | TMM | obj@002b:04cc pc=0004:06b5 sp=ST:0014 fp=ST:0013 argp:ST:0012 |
| 17:02:07 | TMM | 7:[6] sCartoon::cue() |
| 17:02:13 | TMM | obj@002b:04cc pc=0004:07f4 sp=ST:0016 fp=ST:0016 argp:ST:0015 |
| 17:02:15 | TMM | 8:[7] sCartoon::changeState(0000:000f) |
| 17:02:17 | TMM | obj@002b:04cc pc=002b:03f6 sp=ST:001a fp=ST:0019 argp:ST:0017 |
| 17:02:19 | TMM | 9:[8] sCartoon::<call[be]?>() |
| 17:02:21 | TMM | obj@002b:04cc pc=002b:0aa3 sp=ST:0022 fp=ST:001b argp:ST:001a |
| 17:02:57 | lskovlund | Is that where it fails? |
| 17:03:06 | lskovlund | (is that all?) |
| 17:03:11 | TMM | yep |
| 17:03:14 | TMM | this is it |
| 17:03:27 | TMM | this is during the intro |
| 17:07:59 | TMM | anything good in there? :) |
| 17:08:28 | creichen | Another argument for not doing doing a straightforward disassembly/reimplementation is that it won't solve the timing issues (OK, we only solve some of them, but it seems to help). |
| 17:10:55 | TMM | I don't think they would be very hard to spot |
| 17:11:22 | TMM | plus, I am just thinking :) |
| 17:11:44 | TMM | say one would be so inclined to start to work on freesci, what can you actually do? |
| 17:12:10 | TMM | I mean, you either implement, or you document, right? |
| 17:14:37 | lskovlund | creichen: Are Display() saved rects garbage collected? |
| 17:16:04 | lskovlund | Something weird is happening to the bitmap Display() has returned. |
| 17:19:06 | syke | TMM: it is possible to do both, if you come at it from writing unit test scripts as I mentioned before |
| 17:19:27 | syke | but for a given algorithm or feature, if you reveng it, you shouldn't implement it |
| 17:20:51 | TMM | is there a formal document on this? |
| 17:21:23 | lskovlund | lskovlund wants some sleep |
| 17:21:39 | lskovlund | Sorry, FreeSCI release isn't happening tonight. |
| 17:21:47 | lskovlund | Nothing to see here, move along. |
| 17:21:55 | lskovlund | left |
| 17:24:15 | creichen | OK, fixed MVI detection. |
| 17:24:17 | creichen | Ah crap. |
| 17:24:18 | creichen | Oh well. |
| 17:26:58 | creichen | For the log: |
| 17:27:23 | creichen | lskovlun: Display() doesn't actually return saved rectangles. IIRC, it returns a "snapshot" of the widget state and allows all widgets added later to be unrolled. |
| 17:27:29 | syke | creichen: MVI? |
| 17:27:52 | creichen | An instruction set extension for the PCA56 and later Alpha CPUs. |
| 17:27:59 | creichen | We use it for optimised cross-blitting. |
| 17:28:04 | syke | I'm not seeing subversion emails for some reason.. |
| 17:28:06 | syke | ah yes |
| 17:28:26 | syke | creichen: any ideas about TMM's problem that lars was debugging? |
| 17:30:22 | creichen | Depends on what kernel call 1 is... |
| 17:30:29 | syke | I'll get started on a palette config for KQ4 |
| 17:30:43 | creichen | UnLoad()... |
| 17:31:50 | creichen | UnLoad on offset zero of a script segment. Quite odd... normally, scripts are identified by script number. |
| 17:32:53 | creichen | I wonder whether this is a stale reference. A GC bug is not out of the question. |
| 17:33:06 | creichen | TMM: Could you check whether altering the GC interval addresses the issue, please? |
| 17:34:55 | TMM | exactly where do I do that/ |
| 17:35:00 | syke | creichen: you'll have to tell him how to do that, probably |
| 17:35:04 | syke | heh, jinx :) |
| 17:35:16 | creichen | Yes, I'm looking for the precise steps at this very moment ;-) |
| 17:36:25 | creichen | Start up with the debug console enabled (parameter "-D"). |
| 17:36:42 | creichen | Then type in "set gc-interval 1000000000" |
| 17:37:09 | creichen | Press carriage return. |
| 17:37:20 | creichen | Enter "go" and press return to resume running. |
| 17:37:33 | creichen | This should effectively disable gc, unless you run for very, very, very long periods of time. |
| 17:38:16 | creichen | See whether you can reproduce the bug. If you can not, it's a gc bug. If you can, we can rule out the gc algorithm itself as cause of the problem. |
| 17:38:29 | TMM | ok |
| 17:38:31 | TMM | just a sec |
| 17:39:19 | TMM | need to recompile again ;) |
| 17:39:46 | TMM | this whole command line business is a whole lot less work |
| 17:40:19 | creichen | I'm not following you...? |
| 17:40:52 | TMM | [KERN] Could not determine type of ref 002f:0000; failing signature check |
| 17:40:52 | TMM | [VM] Invalid arguments to kernel call 1 |
| 17:40:52 | TMM | acc=0000:0000 prev=0000:0000 &rest=0 |
| 17:40:52 | TMM | pc=002b:0aa3 obj=002b:04cc fp=ST:001b sp=ST:0022 |
| 17:40:52 | TMM | Step #171984 |
| 17:40:53 | TMM | 0aa3: 43 01 04 callk UnLoad[1] 04 |
| 17:40:57 | TMM | Kernel params: (0000:0085, 002f:0000) |
| 17:41:07 | TMM | sorry :( |
| 17:42:56 | creichen | No worries! |
| 17:43:10 | creichen | I guess this means that you're still getting it? |
| 17:43:52 | TMM | yeah |
| 17:45:39 | creichen | OK, no gc, then. |
| 17:48:36 | creichen | Tricky. It might be some kind of presently unsupported semantics... |
| 17:48:41 | creichen | ...Lars would be the one to ask about this... |
| 17:49:31 | creichen | ...though this is somewhat unlikely, as 0x85 is a valid resource type. |
| 17:50:52 | TMM | how would I (having no previous SCI experience) go about debugging this? |
| 17:52:25 | creichen | First of all, I should note that it seems to me that there's a bug in the UnLoad code: When determining the resource type, we do not test for and then strip the leading 0x80. We don't really need to do that anyway. |
| 17:52:49 | creichen | We could just try relaxing the signature constraints on UnLoad to see whether that then works. |
| 17:53:11 | creichen | TMM: First, you need to understand the problem, and what FreeSCI tells you about it. |
| 17:53:18 | creichen | The problem is a "failed signature check". |
| 17:53:40 | creichen | The SCI VM uses low-level VM operations, but also a small library of "kernel calls". |
| 17:54:44 | creichen | Now, to remove clutter in the implementation of these kernel calls (while still retaining some amount of safety), we're checking all parameters that go into a kernel call to see whether they match the expected parameters for that call. |
| 17:54:48 | creichen | This is called the "signature check". |
| 17:55:08 | TMM | sounds reasonable :) |
| 17:55:15 | creichen | Its implementation is in src/engine/kernel.c. |
| 17:55:21 | TMM | but, why the distinction? |
| 17:56:00 | creichen | Please give me a second while I check up some background facts... |
| 17:58:28 | creichen | Ah. src/include/kernel_types.h contains the definitions of the various characters. |
| 17:59:10 | creichen | So, "UnLoad" takes, as parameters, "i.*", which means one integer (determined by being in segment 0) followed by zero or arbitrarily many other things. |
| 17:59:22 | creichen | This is odd, because it should let your call pass. |
| 17:59:51 | creichen | Which distinction? |
| 18:00:23 | creichen | If we have a look at the other error message, "Could not determine type of ref", we see why this is: The dynamic type of the object 2f:0 could not be determined. |
| 18:01:45 | creichen | So what you now want to do is to (a) figure out where the system decides that it doesn't know the dynamic type of this object, and (b) figure out what this dynamic type is supposed to be. |
| 18:03:08 | creichen | For the "where", you may want to start with kernel.c, function "determine_reg_type()", which is in charge of such matters. |
| 18:03:25 | creichen | We'll worry about (b) when we get there. |
| 18:03:43 | creichen | Another useful piece of information is how precisely this value 2f:0 came into being in the first place. |
| 18:04:15 | TMM | ok, I will try |
| 18:04:29 | creichen | This may be due to an unsupported or poorly supported vm operation or kernel call. |
| 18:04:30 | TMM | I suppose it should be doable, expect a lot of bugging from me :) |
| 18:04:44 | creichen | All right ;-) |
| 18:05:26 | waltervn | No release today then... |
| 18:05:48 | creichen | Could someone please double-check a minor patch for 'stable'? |
| 18:05:49 | waltervn | that means I still have time... |
| 18:06:10 | waltervn | creichen: sure |
| 18:06:33 | syke | creichen: sure |
| 18:06:40 | TMM | ow 'stable' that sounds encouraging |
| 18:06:42 | TMM | :) |
| 18:06:45 | syke | btw, still haven't seen subversion emails for the other commits you mentioned |
| 18:06:54 | creichen | http://www-plan.cs.colorado.edu/creichen/freesci/mvi.diff |
| 18:06:57 | syke | TMM: as you can see, glutton is Not stable ;> |
| 18:07:38 | creichen | glutton doesn't distcheck ATM. |
| 18:07:41 | syke | creichen: looks good to me |
| 18:07:55 | waltervn | glutton does many things that make me go "huh?!" at this point. :) |
| 18:08:07 | creichen | gfx_test.c is broken. Will fix this momentarily. |
| 18:08:27 | waltervn | gfx_test.c has been broken as long as I can remember. :) |
| 18:08:32 | creichen | Then I'll go home and make some food, though I should be around enough to answer questions ;-) |
| 18:08:39 | creichen | syke: Thanks, then I'll commit. |
| 18:09:36 | TMM | creichen, thanks |
| 18:30:23 | creichen | 0.3.5pre2 is working fine on DEC Alpha EV5 with both DEC cc and gcc. |
| 18:34:15 | Fingolfin | left |
| 18:36:12 | creichen | Similarly glutton on DEC cc. Compiling gcc... |
| 18:51:28 | creichen | The gcc build dies with a floating point exception. Compiling on this thing takes disturbingly long... |
| 18:51:57 | creichen | -mieee ought to fix that (it's a problem in the sound subsystem, in case you're wondering-- not sure where the floating comes into the points there, though). |
| 18:52:14 | creichen | I'll check that build tomorrow, seeing as we're not releasing today anyway. |
| 18:54:13 | creichen | afk for ~15 minutes. |
| 19:02:59 | syke | ok |
| 19:15:55 | creichen | back |
| 19:22:36 | syke | re |
| 20:35:02 | weedar | left |
| 20:41:16 | waltervn | left |
| 20:42:58 | waltervn | joined |
| 20:47:21 | syke | heya walter |
| 20:47:59 | waltervn | hey |
| 22:21:57 | waltervn | left |
| 23:45:12 | syke | phew |
| 23:45:16 | syke | finally done with qg1 |