[Back to Index]

[00:08] --> dreammaster joined #scummvm.
[00:08] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services.
[00:08] --> _sev joined #scummvm.
[00:08] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[00:09] <-- _sev left irc: Client Quit
[00:13] --> _sev joined #scummvm.
[00:13] <-- _sev left irc: Changing host
[00:13] --> _sev joined #scummvm.
[00:13] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[00:14] <-- _sev left irc: Client Quit
[00:16] --> _sev joined #scummvm.
[00:16] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[00:20] <-- _sev left irc: Ping timeout: 248 seconds
[00:25] --> GitHub70 joined #scummvm.
[00:25] <GitHub70> [scummvm] dreammaster pushed 2 new commits to master: https://git.io/vALES
[00:25] <GitHub70> scummvm/master 8d4230d Paul Gilbert: XEEN: Reduce code duplication in Clouds ending
[00:25] <GitHub70> scummvm/master 549b904 Paul Gilbert: XEEN: Fix MonsterStruct _accuracy to be _armorClass...
[00:25] GitHub70 (GitHub70@gateway/service/github.com/x-okvxjuwooprqpslq) left #scummvm.
[00:31] <-- Farmboy0 left irc: Remote host closed the connection
[00:38] --> GitHub82 joined #scummvm.
[00:38] <GitHub82> [scummvm] dreammaster pushed 1 new commit to master: https://git.io/vALu5
[00:38] <GitHub82> scummvm/master 2ac3617 Paul Gilbert: XEEN: Fix experience doubling calculation...
[00:38] GitHub82 (GitHub82@gateway/service/github.com/x-vztvnunkyukkiane) left #scummvm.
[01:09] --> Stormkeeper joined #scummvm.
[01:41] --> phyber_ joined #scummvm.
[01:41] <-- phyber left irc: Ping timeout: 255 seconds
[01:42] Nick change: phyber_ -> phyber
[02:16] <-- Joefish left irc: Ping timeout: 276 seconds
[02:17] --> Joefish joined #scummvm.
[02:17] #scummvm: mode change '+v Joefish' by ChanServ!ChanServ@services.
[02:59] Nick change: Stormkeeper -> Storm-AFK
[03:08] <-- dreammaster left irc:

[03:40] <P2E> codecodecode
[03:48] <bgK> snover: I don't think not interpolating the alpha would solve the issue. The color channel would still be interpolated with the key color. What you need is probably a technique named pre-multipled alpha. See https://blog.rarepebble.com/premultiplied-alpha-in-opengl/
[04:02] --> Poly-C joined #scummvm.
[04:05] <-- Polynomial-C left irc: Ping timeout: 240 seconds
[05:26] <snover> that blend mode seems to be already being used. i can set the palette colour to zero too instead of just the alpha channel, but that just causes the colour fringing to be black instead, since the colour interpolation is still happening, right? the only way for this to not happen would be for the colour of those transparent pixels to be the same as the colour of the visible edge pixels
[05:26] <snover> if i understand correctly.
[05:27] <snover> ive been sick for a while and it is impacting my ability to think clearly so apologies for any greater-than-usual level of incoherence
[05:27] <snover> bgK: ^
[05:32] <snover> so any easy solution to this, like something that doesnt interpolate edge pixels (i.e. as if the background was the correct colour), or something that renders the cursor and game together at 1x and then upscales.
[05:32] <snover> is what i was going for.
[05:37] <snover> maybe i am misunderstanding something about how this intended to work.
[05:41] <snover> OOPS
[05:41] <snover> im a little slow today
[05:42] <snover> GL_ONE, not GL_SRC_ALPHA.
[05:43] <snover> now this is working in the expected way, and i am not going to touch it until i am less cloudy :)
[05:45] <snover> id like to improve my knowledge of GL programming, and having a brain which is not processing the things that it is reading is not going to help me to be successful at that.
[05:54] <snover> this is going to blow up cursors with alpha which are not premultiplied, like the ones in starship titanic, though, isnt it.
[06:13] <snover> i guess that is some requirement that could be made on engines, to send premultiplied cursors if they have alpha.
[06:22] <snover> bgK: thanks for your help, this at least makes sense now finally.
[06:35] <-- kurtwr2 left irc:
[06:38] --> kurtwr joined #scummvm.
[06:59] --> Strangerke_ joined #scummvm.
[07:01] <-- Strangerke left irc: Ping timeout: 268 seconds
[07:01] Nick change: Strangerke_ -> Strangerke
[07:16] <bgK> snover: maybe it could be the backend's job to apply the pre-multiplication to the cursors it receives, so the way cursors are drawn remains an implementation detail unknown to the engines
[07:17] <snover> i was thinking more about the case where a game may or may not have premultiplied assets
[07:18] <bgK> snover: oh, ok
[07:31] <-- Strangerke left irc: Ping timeout: 264 seconds
[07:32] --> Strangerke joined #scummvm.
[07:38] <-- Strangerke left irc: Ping timeout: 240 seconds
[07:39] --> Strangerke joined #scummvm.
[07:52] --> Strangerke_ joined #scummvm.
[07:54] <-- Strangerke left irc: Ping timeout: 240 seconds
[07:54] Nick change: Strangerke_ -> Strangerke
[07:58] <-- Strangerke left irc: Ping timeout: 248 seconds
[08:08] <-- bonki left irc: Ping timeout: 255 seconds
[08:11] --> bonki joined #scummvm.
[08:11] #scummvm: mode change '+o bonki' by ChanServ!ChanServ@services.
[08:12] --> Begasus joined #scummvm.
[08:20] --> Begas_VBox joined #scummvm.
[08:25] <-- Drenn left irc: Remote host closed the connection
[08:40] --> t0by joined #scummvm.
[09:11] <-- t0by left irc: Quit: t0by
[09:17] --> Strangerke joined #scummvm.
[09:35] --> _sev joined #scummvm.
[09:35] <-- _sev left irc: Changing host
[09:35] --> _sev joined #scummvm.
[09:35] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[09:37] --> salty-horse joined #scummvm.
[09:37] <-- salty-horse left irc: Changing host
[09:37] --> salty-horse joined #scummvm.
[09:37] #scummvm: mode change '+o salty-horse' by ChanServ!ChanServ@services.
[09:45] <-- _sev left irc: Quit: This computer has gone to sleep
[09:57] --> _sev joined #scummvm.
[09:57] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[10:01] <-- LittleToonCat left irc: Remote host closed the connection
[10:05] <-- _sev left irc: Quit: This computer has gone to sleep
[10:07] --> _sev joined #scummvm.
[10:07] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[10:10] <-- antlarr left irc: Remote host closed the connection
[10:17] --> antlarr joined #scummvm.
[10:18] <-- antlarr left irc: Remote host closed the connection
[10:24] --> antlarr joined #scummvm.
[10:49] <-- Lightkey left irc: Ping timeout: 255 seconds
[10:57] --> waltervn joined #scummvm.
[10:57] #scummvm: mode change '+o waltervn' by ChanServ!ChanServ@services.
[11:02] --> Lightkey joined #scummvm.
[11:14] <-- _sev left irc: Quit: This computer has gone to sleep
[11:19] --> _sev joined #scummvm.
[11:19] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[11:20] <-- _sev left irc: Client Quit
[11:22] --> _sev joined #scummvm.
[11:22] <-- _sev left irc: Changing host
[11:22] --> _sev joined #scummvm.
[11:22] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[11:28] --> heroux joined #scummvm.
[11:30] <-- _sev left irc: Quit: This computer has gone to sleep
[11:47] --> _sev joined #scummvm.
[11:47] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[11:54] <-- antlarr left irc: Ping timeout: 256 seconds
[11:54] --> antlarr joined #scummvm.
[12:15] <-- Begasus left irc: Ping timeout: 255 seconds
[12:27] --> Begasus joined #scummvm.
[13:01] <-- _sev left irc: Quit: This computer has gone to sleep
[13:05] Nick change: Storm-AFK -> Stormkeeper
[13:08] --> _sev joined #scummvm.
[13:08] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[13:28] --> ajax16384 joined #scummvm.
[13:28] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services.
[13:41] --> Littleboy joined #scummvm.
[13:41] #scummvm: mode change '+o Littleboy' by ChanServ!ChanServ@services.
[13:49] --> mwillcock joined #scummvm.
[13:51] <mwillcock> Hi. I'm try to finish the AGS engine port and had a couple of questions about audiostreams, if anyone thinks they could help?
[14:01] <salty-horse> mwillcock, on your own? Might want to consult the devs who abandoned it
[14:01] <mwillcock> Tried to get in touch with her, but no reply...
[14:02] <mwillcock> Questions more about the handling of audiostreams I'd seen in some other engines, specifically casting between audiostream types
[14:17] <salty-horse> I hope you have an idea what's left to implement, then :) good luck. start asking your question and if anyone knows, they'll answer.
[14:21] <mwillcock> there was a to-do list, plus code comments, so I've got a rough idea
[14:27] <mwillcock> The way the mixer is used in the engine, all referenced audio streams are currently using SeekableAudioStream, but if I'm loading in MOD audio I can only get AudioStream (non-seekable). In some other engines I'm seeing dynamic_cast used to switch between the stream classes but when I've tried it I don't get a playable stream. Is it normal to have variables in an audio 'channel' for each type of stream, and then use the appropriate one depending on the so
[14:27] <mwillcock> rce, or should I be able to cast or wrap a non-seekable stream to make it seekable?
[15:27] --> Strangerke_ joined #scummvm.
[15:28] <-- Strangerke left irc: Ping timeout: 256 seconds
[15:28] Nick change: Strangerke_ -> Strangerke
[15:30] <-- Begasus left irc: Ping timeout: 256 seconds
[15:39] --> dreammaster joined #scummvm.
[15:39] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services.
[15:42] --> Begasus joined #scummvm.
[16:01] <madmoose> mwillcock: You can't make an audio stream seekable by casting it. I would investigate why the mixer requires seekable streams in the first place.
[16:02] <mwillcock> thanks, I think it is only using seekable streams because all existing audio resources can load as a seekable stream, and AGS scripting requires the ability to seek on audio
[16:04] <madmoose> Maybe you can change it to use plain audio streams?
[16:06] --> ny00123 joined #scummvm.
[16:09] <mwillcock> If I switch to instances of the audiostream superclass, then I can get all the audio to the mixer, but then I didn't know how I would implement the seeking. Given that loading OGG gives you a seekable stream, and loading MOD gives you a non-seekable stream, what do you think is the best way to get them to the mixer?
[16:10] <madmoose> Does the mixer need to seek?
[16:13] <mwillcock> I should probably my C++ experience isn't much, so I may be overlooking something simple, but basically in (real) AGS any playing audio channel can have seek functions called on, and I think (could be wrong) that if I just pass everything to the mixer as AudioStream, the seek functions wouldn't be available.
[16:18] <mwillcock> What I'd seen in other engines was this:
[16:18] <mwillcock> Audio::RewindableAudioStream *stream = Audio::makeAIFFStream(file, DisposeAfterUse::YES);
[16:18] <mwillcock> _stream = dynamic_cast<Audio::SeekableAudioStream *>(stream);
[16:21] --> criezy joined #scummvm.
[16:21] #scummvm: mode change '+o criezy' by ChanServ!ChanServ@services.
[16:26] <dreammaster> millcock: SeekableAudioStream derives from RewindableAudioStream. And it looks like makeAIFFStream can create various different types of descendents, depending on data read from the header of the file
[16:26] <dreammaster> So if a particular game knew what specific sub-type of audio was contained in their files, you could do a cast to SeekableAudioStream.
[16:27] <dreammaster> And it's done safely with a dynamic_cast. So if the returned stream isn't a descendent of SeekableAudioStream, it would return null. So no fear of invalid indeterminate results of trying to treat something as a seekable stream if it wasn't
[16:36] <mwillcock> Okay thanks. So if I'm trying to use the ModXmS3m audio loader, and the function to load only gives me AudioStream, I wouldn't ever be able to seek it?
[16:38] <dreammaster> Hmmm.. right. ModXmS3mStream derives directly from AudioStream, so you can't cast it to a SeekableAudioStream
[16:41] <dreammaster> I'm not sure what to advise. You've said that AGS requires the ability to seek on the audio. So maybe there is some way to decode all the data from the loaded stream at once, and dump it into a raw audio stream or something that is seekable
[16:43] <dreammaster> Though that would depend on all the audio files being small enough. Given that some of those AGS games are multi-hundred megabytes, if lots of audio are in single files that may not be practical. Maybe it's possible to refactor the ModXms3mStream to derive from SeekableAudioStream instead.
[16:44] <dreammaster> Though that too may prove problematic if that particular audio format has no form of index for seeking to particular points. Having spent more than my fair share of time working on the AVIDecoder for Starship Titanic, I really appreciate how complicated issues of seeking can get :P
[16:45] <mwillcock> I did think about manually streaming it, as if I was the mixer, and then reloading as a raw stream, but it didn't seem a good idea at the time as I would be inflating tiny modules into memory.
[16:47] <mwillcock> MOD based stuff should be fine for seeking, as the whole format is based on repeating audio channels, but I don't know much about the internals of it. I was surprised when it didn't expose any seeking functions.
[16:48] <dreammaster> Maybe contact someone with more experience with that particular decoder. Check the git log for the decoder to see who's worked on it.
[16:49] <mwillcock> Thanks, that is a good idea. To be honest I'm not sure how many games would rely on seeking every audio format, but I thought whilst looking at the audio and mixer if I didn't consider all formats now I might get stuck later on
[16:51] <mwillcock> Would you also know the best way to do looping audio, outside of using Audio::LoopingAudioStream (for the same reason, as this wouldn't be seekable)
[16:52] <mwillcock> Presumably, just don't use it and keep checking to see if the currently playing audio has ended?
[16:53] <dreammaster> I guess, yes
[16:54] <mwillcock> Okay, thanks for the assistance. :-)
[16:55] <dreammaster> I'm not sure if there would be any issues with reseting that particular specific audio subclass. I don't think the base audio stream has any means for resetting the audio. In which case you'd need to keep state of where the audio was loaded from and keep calling the makeAiff method again to create a fresh stream
[16:55] <dreammaster> No problem. Good luck :)
[16:57] <mwillcock> I think it is already tracking the audio resources, so hopefully would just need to track the position.
[16:57] <mwillcock> Thanks again.
[16:57] <bonki> ModXmS3mStream does have a seek() method, though, so it should be seekable?
[16:58] <dreammaster> Does it? If so, then bonza! \o/
[16:58] <mwillcock> I thought that was internal? Although I may be confused.
[16:59] <dreammaster> Hmmm.. seems to be so currently. But it could form the basis for refactoring the class to derive from SeekableAudioStream, and using that method internally to implement the necessary seeking
[16:59] <snover> it is. its not mandatory for you to not change common code though. if you need this to be seekable and it is technically possible to do that then you can change the parent class and implement the additional interface.
[17:00] <snover> i think the biggest problem is that in these formats the length is indeterminate, just like a midi file
[17:01] <snover> and since these APIs operate on times and not bytes, what does it mean to seek to a given time?
[17:01] <mwillcock> I would have thought the data says how long it would be, it would have a tempo and pattern to play
[17:01] <mwillcock> You would seek to a pattern position, you wouldn't be able to jump to any point, just the nearest point
[17:03] <mwillcock> I think it should be possible to get the nearest position for a given real time, as well as just manipulate where in the pattern you are.
[17:04] <snover> its been a long time since i looked at some mod format sound so i am going off of memory for some of this stuff. iirc they all have instructions for handling looping, and the more advanced formats have instructions for dynamically changing the tempo
[17:05] <bonki> However precise or imprecise seeking is with the format, upstream has the same limitations so it probably doesn't matter...?
[17:06] <bonki> Or am I missing something?
[17:07] <mwillcock> Yes, the original engine seeks to a pattern number
[17:07] <snover> upstream could seek to byte or pattern
[17:09] <snover> you may need to have this class implement an extended seeking API which exposes a pattern seek
[17:09] <bonki> Looks like it
[17:12] <snover> i have to imagine this will not be the last engine which uses tracker format and did pattern seeking
[17:13] <snover> so it will be good to have that in place for everyone for the future.
[17:14] <mwillcock> Thank you all for the advice. I'll try to get all the audio as seekable before it gets to the mixer, and hold off on the MOD support for the moment.
[17:15] <snover> sorry, are you talking about the system mixer?
[17:15] <mwillcock> yes
[17:16] <snover> it doesnt do anything with seeking, it uses only the AudioStream API
[17:16] <snover> any functionality beyond that is entirely for the sake of the engine
[17:17] <mwillcock> I've only just started looking at it, but I think what was implmented in the engine so far keeps a reference to the audio before passing it to the mixer
[17:21] <snover> that sounds normal for an engine which needs to control the streams
[17:29] <-- dreammaster left irc:
[17:31] <-- CuriosTiger left irc: Remote host closed the connection
[17:44] --> CuriosTiger joined #scummvm.
[17:55] <Lightkey> so we have two w???cocks now
[17:59] <snover> im not even touching that.
[18:01] --> Littleboy_ joined #scummvm.
[18:01] <-- Littleboy left irc: Disconnected by services
[18:01] #scummvm: mode change '+o Littleboy_' by ChanServ!ChanServ@services.
[18:01] <Lightkey> https://twitter.com/SmallLebowskii/status/960208966717464578 :o
[18:08] <bonki> That's amazing
[18:09] <mwillcock> I did try a nickname, but it was taken...
[18:11] <mwillcock> it has been a problem with misconfigured HTTP proxies, where I get 'filtered' for trying to login
[18:13] <snover> the good ole scunthorpe problem
[18:20] <mwillcock> same place also tried to block zip file downloads, so you couldn't search for marzipan
[18:20] <-- ajax16384 left irc: Read error: Connection reset by peer
[18:20] <snover> im sure they successfully protected somebody from something.
[18:20] <snover> probably employees from being productive.
[18:40] --> Drenn joined #scummvm.
[18:46] --> Dominus joined #scummvm.
[18:54] <-- Begasus left irc: Ping timeout: 256 seconds
[18:56] --> LittleToonCat joined #scummvm.
[19:07] --> Begasus joined #scummvm.
[19:14] <-- Begasus left irc: Ping timeout: 256 seconds
[19:27] --> Begasus joined #scummvm.
[19:40] --> dreammaster joined #scummvm.
[19:40] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services.
[20:03] --> GitHub186 joined #scummvm.
[20:03] <GitHub186> [scummvm] peterkohaut pushed 1 new commit to master: https://git.io/vAtOE
[20:03] <GitHub186> scummvm/master 0b484d5 Peter Kohaut: BLADERUNNER: VK interface...
[20:03] GitHub186 (GitHub186@gateway/service/github.com/x-drqgzlgscemritjt) left #scummvm.
[20:24] #scummvm: mode change '+o Strangerke' by ChanServ!ChanServ@services.
[20:29] Nick change: JustTheDoctor -> cDepotBot
[20:30] Nick change: cDepotBot -> JustTheDoctor
[21:00] <-- salty-horse left irc: Quit: Leaving
[21:01] <-- Begas_VBox left irc: Read error: No route to host
[21:04] <-- Begasus left irc: Ping timeout: 240 seconds
[21:33] <snover> criezy: did you want me to work on the Help menu thing?
[21:38] dreammaster (~dreammast@c-73-149-116-247.hsd1.ma.comcast.net) got netsplit.
[21:38] Dominus (~dominus@unaffiliated/dominus) got netsplit.
[21:38] marcusramberg (~marcusram@216.246.80.69) got netsplit.
[21:38] aquadran (aquadran@scummvm/undead/aquadran) got netsplit.
[21:38] holdsworth (~quassel@unaffiliated/holdsworth) got netsplit.
[21:38] edheldil (~edheldil@2001:1488:fffe:1:2830:1146:3382:ea16) got netsplit.
[21:38] tsoliman (~tsoliman@scummvm/undead/tsoliman) got netsplit.
[21:38] Harekiet (harekiet@kittens.harekiet.com) got netsplit.
[21:38] flesk___ (~quassel@2a03:b0c0:3:d0::4187:4001) got netsplit.
[21:38] Cheeseness (~cheesenes@ppp118-208-252-73.bras1.hba2.internode.on.net) got netsplit.
[21:38] Netmage (~Netmage@2a00:12d8:2:7::156) got netsplit.
[21:38] dos1 (~dos1@neo900/coreteam/dos) got netsplit.
[21:38] rsn8887 (Elite20822@gateway/shell/elitebnc/x-hfzajwbezqrsvwfn) got netsplit.
[21:38] Cruel` (~Cruel@cruels.net) got netsplit.
[21:42] Cheeseness (~cheesenes@ppp118-208-252-73.bras1.hba2.internode.on.net) returned to #scummvm.
[21:42] Netmage (~Netmage@2a00:12d8:2:7::156) returned to #scummvm.
[21:42] dos1 (~dos1@neo900/coreteam/dos) returned to #scummvm.
[21:42] rsn8887 (Elite20822@gateway/shell/elitebnc/x-hfzajwbezqrsvwfn) returned to #scummvm.
[21:42] Cruel` (~Cruel@cruels.net) returned to #scummvm.
[21:45] dreammaster (~dreammast@c-73-149-116-247.hsd1.ma.comcast.net) returned to #scummvm.
[21:45] Dominus (~dominus@unaffiliated/dominus) returned to #scummvm.
[21:45] edheldil (~edheldil@2001:1488:fffe:1:2830:1146:3382:ea16) returned to #scummvm.
[21:45] tsoliman (~tsoliman@scummvm/undead/tsoliman) returned to #scummvm.
[21:45] marcusramberg (~marcusram@216.246.80.69) returned to #scummvm.
[21:45] aquadran (aquadran@scummvm/undead/aquadran) returned to #scummvm.
[21:45] Harekiet (harekiet@kittens.harekiet.com) returned to #scummvm.
[21:45] flesk___ (~quassel@2a03:b0c0:3:d0::4187:4001) returned to #scummvm.
[21:45] holdsworth (~quassel@unaffiliated/holdsworth) returned to #scummvm.
[21:45] #scummvm: mode change '+ooo dreammaster tsoliman aquadran' by niven.freenode.net
[21:46] <-- flesk_ left irc: Ping timeout: 256 seconds
[21:47] yashgandhe[m] <-- (yashgandhe@gateway/shell/matrix.org/x-hnamgowmmoonqawz) left irc: Ping timeout: 260 seconds
[21:47] Coldwine[m] <-- (coldwinema@gateway/shell/matrix.org/x-wznlkpjksbhuhvdq) left irc: Ping timeout: 260 seconds
[21:50] <-- criezy left irc: Quit: criezy
[22:02] <-- ny00123 left irc: Quit: Leaving
[22:23] <-- Drenn left irc: Ping timeout: 248 seconds
[22:39] --> Drenn joined #scummvm.
[23:09] Coldwine[m] --> (coldwinema@gateway/shell/matrix.org/x-dhzcaocyzabcvawe) joined #scummvm.
[23:12] <-- demonimin left irc: Remote host closed the connection
[23:12] <-- mwillcock left irc: Quit: mwillcock
[23:23] --> LubomirR joined #scummvm.
[23:34] <-- heroux left irc: Ping timeout: 276 seconds
[23:34] --> heroux joined #scummvm.
[23:40] --> flesk_ joined #scummvm.
[23:40] yashgandhe[m] --> (yashgandhe@gateway/shell/matrix.org/x-zrsrvqxxaijrfyri) joined #scummvm.
[23:59] Nick change: Stormkeeper -> Storm-AFK
[00:00] --- Sun Feb 11 2018