[00:00] reconfig just in case the conf is broken, it will give you a warning [00:00] without stopping buildbot [00:01] OK will do [00:25] SylvainTV (~Sylvain@lfbn-lil-1-811-bdcst.w92-148.abo.wanadoo.fr) left irc: Read error: Connection reset by peer [00:36] [scummvm] bluegr closed pull request #1660: SCI: Fix SQ4 Sock's Sequel police crash, bug #10974 (master...sq4socksspcrash) https://git.io/fjg9b [00:36] [scummvm] bluegr pushed 1 new commits to master: https://git.io/fj2LS [00:36] scummvm/master 222ed9c sluicebox: SCI: Fix SQ4 Sock's Sequel police crash, bug #10974 [01:44] criezy (~criezy@host86-172-172-188.range86-172.btcentralplus.com) left irc: Quit: criezy [02:51] Drenn (~Drenn@toroon0717w-lp130-07-70-52-223-40.dsl.bell.ca) left irc: Ping timeout: 248 seconds [03:00] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [03:04] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 245 seconds [03:11] SupSuper (~SupSuper@openxcom/dev/supsuper) left irc: Quit: Rip [03:15] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) joined #scummvm. [03:15] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services. [03:26] Lightkey (~Darklock@p200300F693C83E2922CF30FFFE083718.dip0.t-ipconnect.de) left irc: Ping timeout: 248 seconds [03:36] Drenn (~Drenn@toroon0717w-lp130-07-70-52-223-40.dsl.bell.ca) joined #scummvm. [03:39] Lightkey (~Darklock@p200300F693C83E5222CF30FFFE083718.dip0.t-ipconnect.de) joined #scummvm. [04:16] Praetorian|str (~antoniou@2a02:587:790d:3f00:a550:c694:f45a:ef21) left irc: Quit: Leaving [04:19] Littleboy (~littleboy@pool-71-162-119-10.bstnma.fios.verizon.net) left irc: Quit: Κtre dans le vent, une ambition de feuille morte. [04:45] jamm (~jam@i220-108-247-25.s42.a013.ap.plala.or.jp) joined #scummvm. [04:45] jamm (~jam@i220-108-247-25.s42.a013.ap.plala.or.jp) left irc: Changing host [04:45] jamm (~jam@unaffiliated/jamm) joined #scummvm. [04:45] ldevulder (~ldevulder@i15-lef02-th2-89-83-217-59.ft.lns.abo.bbox.fr) left irc: Read error: Connection reset by peer [04:45] ldevulder (~ldevulder@i15-lef02-th2-89-83-217-59.ft.lns.abo.bbox.fr) joined #scummvm. [04:59] eriktorbjorn (~d91tan@213-65-60-100-no2480.tbcn.telia.com) left irc: Quit: Leaving. [05:01] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [05:02] vyzigold (~jarda@39.129.broadband4.iol.cz) joined #scummvm. [05:03] I have a photo of ScummVM running on Switch: [05:03] https://cdn.discordapp.com/attachments/581224061091446795/588594324598554669/image0.jpg [05:04] @rootfather Maybe it could be added to the news article? [05:04] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) left irc: [05:05] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 258 seconds [05:16] Littleboy (~littleboy@pool-71-162-119-10.bstnma.fios.verizon.net) joined #scummvm. [05:16] #scummvm: mode change '+o Littleboy' by ChanServ!ChanServ@services. [05:23] emmalyn (~emmalyn@c-98-210-124-136.hsd1.ca.comcast.net) left irc: Ping timeout: 246 seconds [05:26] [scummvm] dreammaster pushed 6 new commits to master: https://git.io/fj2mB [05:26] scummvm/master 9c07715 dreammaster: GLK: ADVSYS: Remaining opcode implementations [05:26] scummvm/master 4e74751 dreammaster: GLK: ADVSYS: Added input line split up and tokenizing [05:26] scummvm/master 9efb6d7 dreammaster: GLK: ADVSYS: In progress implementing input line parser [05:26] Littleboy (~littleboy@pool-71-162-119-10.bstnma.fios.verizon.net) left irc: Quit: Κtre dans le vent, une ambition de feuille morte. [05:58] jamm (~jam@unaffiliated/jamm) left irc: Ping timeout: 248 seconds [06:06] TAS_2012v (~2012@c83-191-170-253.bredband.comhem.se) left irc: [06:19] TAS_2012v (~2012@c83-191-170-253.bredband.comhem.se) joined #scummvm. [06:36] whiterandrek (~CVoltage@ppp-109-104-179-20.wildpark.net) joined #scummvm. [06:36] #scummvm: mode change '+o whiterandrek' by ChanServ!ChanServ@services. [06:38] Nick change: jammm -> jamm [07:02] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [07:07] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 268 seconds [07:24] Drenn (~Drenn@toroon0717w-lp130-07-70-52-223-40.dsl.bell.ca) left irc: Ping timeout: 244 seconds [08:01] Drenn (~Drenn@bas6-toronto01-70-52-223-40.dsl.bell.ca) joined #scummvm. [08:02] Good morning all! [08:02] Can I use Common::Rect as const global? [08:07] @rsn8887 sure, I can add the image later today if there are no objections [08:37] vliaskov (~vliaskov@x4d0ba8f5.dyn.telefonica.de) joined #scummvm. [08:47] ced117 (~ced117@opensuse/member/ced117) left irc: Ping timeout: 245 seconds [08:56] Drenn (~Drenn@bas6-toronto01-70-52-223-40.dsl.bell.ca) left irc: Ping timeout: 244 seconds [09:19] cd (~none@gateway/tor-sasl/cd) joined #scummvm. [09:26] pa[m] (~pamatrixs@104-178-203-177.lightspeed.tukrga.sbcglobal.net) left irc: Ping timeout: 244 seconds [10:02] cd (~none@gateway/tor-sasl/cd) left irc: Remote host closed the connection [10:03] cd (~none@gateway/tor-sasl/cd) joined #scummvm. [10:04] Good morning! [10:20] whiterandrek (~CVoltage@ppp-109-104-179-20.wildpark.net) left irc: Read error: Connection reset by peer [10:21] vyzigold (~jarda@39.129.broadband4.iol.cz) left irc: Ping timeout: 245 seconds [11:03] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [11:04] Good morning! [11:08] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 272 seconds [11:11] vyzigold (~jarda@39.129.broadband4.iol.cz) joined #scummvm. [11:24] ced117 (~ced117@opensuse/member/ced117) joined #scummvm. [12:04] ced117 (~ced117@opensuse/member/ced117) left irc: Ping timeout: 245 seconds [12:06] ced117 (~ced117@opensuse/member/ced117) joined #scummvm. [12:10] jamm (~jamm@unaffiliated/jamm) left irc: Ping timeout: 244 seconds [12:15] jamm (~jamm@unaffiliated/jamm) joined #scummvm. [12:18] Shouldn't this be updated to include Discord? https://wiki.scummvm.org/index.php?title=Project_Services [12:21] Praetorian|str (~antoniou@2a02:587:790d:3f00:e97d:178f:f17d:2352) joined #scummvm. [12:30] jamm (~jamm@unaffiliated/jamm) left irc: Read error: Connection reset by peer [12:59] jamm (~jam@i220-108-247-25.s42.a013.ap.plala.or.jp) joined #scummvm. [12:59] jamm (~jam@i220-108-247-25.s42.a013.ap.plala.or.jp) left irc: Changing host [12:59] jamm (~jam@unaffiliated/jamm) joined #scummvm. [13:05] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [13:07] emmalyn (~emmalyn@c-98-210-124-136.hsd1.ca.comcast.net) joined #scummvm. [13:09] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 248 seconds [13:20] Littleboy (~littleboy@pool-71-162-119-10.bstnma.fios.verizon.net) joined #scummvm. [13:20] #scummvm: mode change '+o Littleboy' by ChanServ!ChanServ@services. [13:33] Praetorian_str (~antoniou@2a02:587:790d:3f00:e97d:178f:f17d:2352) joined #scummvm. [13:36] Praetorian|str (~antoniou@2a02:587:790d:3f00:e97d:178f:f17d:2352) left irc: Ping timeout: 258 seconds [13:46] antlarr (~quassel@85.137.249.130.dyn.user.ono.com) left irc: Ping timeout: 258 seconds [13:50] antlarr (~quassel@85.137.249.130.dyn.user.ono.com) joined #scummvm. [13:57] Praetorian|str (~antoniou@2a02:587:790d:3f00:e97d:178f:f17d:2352) joined #scummvm. [14:01] Praetorian_str (~antoniou@2a02:587:790d:3f00:e97d:178f:f17d:2352) left irc: Ping timeout: 258 seconds [14:03] Begasus (~begasus@ptr-4qba4e9h9fwpesydlle.18120a2.ip6.access.telenet.be) joined #scummvm. [14:31] vyzigold (~jarda@39.129.broadband4.iol.cz) left irc: Ping timeout: 248 seconds [14:58] How to link to Discord correctly? [14:58] Some kind of invite link? [14:59] yup: https://discord.gg/5D8yTtF [15:00] Who is the Discord maintainer? [15:01] I guess sev [15:01] Done [15:05] Yep, sev maintains the discord channel. The link I sent is permanent, so you can pass it to others. [15:05] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [15:06] What are the bots? Grogbot and? [15:06] Github [15:09] How does one become a dev here on Discord? [15:09] antlarr (~quassel@85.137.249.130.dyn.user.ono.com) left irc: Ping timeout: 245 seconds [15:09] I see I am one, but I didn't do anything. [15:09] I guess that is the answer then πŸ˜ƒ [15:10] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 246 seconds [15:10] antlarr (~quassel@85.137.249.130.dyn.user.ono.com) joined #scummvm. [15:11] Ok I updated https://wiki.scummvm.org/index.php?title=Project_Services and also wrote a Discord article: https://wiki.scummvm.org/index.php?title=Discord_Server [15:18] SupSuper (~SupSuper@openxcom/dev/supsuper) joined #scummvm. [15:33] vliaskov (~vliaskov@x4d0ba8f5.dyn.telefonica.de) left irc: Quit: Leaving [15:52] ldevulder_ (~ldevulder@i15-lef02-th2-89-83-214-96.ft.lns.abo.bbox.fr) joined #scummvm. [15:56] ldevulder (~ldevulder@i15-lef02-th2-89-83-217-59.ft.lns.abo.bbox.fr) left irc: Ping timeout: 272 seconds [16:03] eriktorbjorn (~d91tan@213-65-60-100-no2480.tbcn.telia.com) joined #scummvm. [16:03] #scummvm: mode change '+o eriktorbjorn' by ChanServ!ChanServ@services. [16:05] vyzigold (~jarda@39.129.broadband4.iol.cz) joined #scummvm. [16:08] you become a dev by getting the attention of someone who has the "manage roles" permission [16:09] ny00123 (~ny00123@213.137.91.167) joined #scummvm. [16:09] Actually, from anybody with the role "owners" [16:09] You can't give a role with your hierarchy level in Discord (for example an admin giving somebody else admin) [16:10] it doesn't necessarily give you op permissions like irc though πŸ˜‰ [16:13] another point for discord, it has better permission management [16:26] DominusExult (~dominus@port-92-194-116-13.dynamic.qsc.de) joined #scummvm. [16:26] DominusExult (~dominus@port-92-194-116-13.dynamic.qsc.de) left irc: Changing host [16:26] DominusExult (~dominus@unaffiliated/dominus) joined #scummvm. [16:28] Drenn (~Drenn@bas6-toronto01-70-52-223-40.dsl.bell.ca) joined #scummvm. [16:29] Dominus (~dominus@unaffiliated/dominus) left irc: Ping timeout: 268 seconds [16:29] Nick change: DominusExult -> Dominus [16:34] vyzigold (~jarda@39.129.broadband4.iol.cz) left irc: Ping timeout: 272 seconds [16:35] Drenn (~Drenn@bas6-toronto01-70-52-223-40.dsl.bell.ca) left irc: Read error: No route to host [16:35] Drenn (~Drenn@bas6-toronto01-70-52-223-40.dsl.bell.ca) joined #scummvm. [16:48] Also rsn, GitHub isn't a bot, even if Discord says so [16:48] It's a webhook [16:49] tomayto, tomahto [16:49] Is it a robot? Robot or Not? [16:49] The difference between both is that webhooks' don't have a tag, and the discriminator is considered 0000, while bots do [16:50] (tag is username#discriminator, by the way) [16:51] and conveniently, the username is different from the display name [16:54] The display name is what would be nickname ?? username in a few languages, if nickname is null, it falls back to username [16:54] I think that's pretty standard in many messaging services [16:55] of course, none of that actually matters internally. my real id is 146396385111965696 [16:55] i think discord likes to call that a "snowflake"? [16:55] Yeah, it's the same for Twitter, just different epoch [16:58] Discord's epoch is set at 2015-01-01T00:00:00.000Z, while Twitter's is set at 2010-11-04T01:42:54.657Z [17:00] Nevertheless the id is only shown to developers (or those who enable the developer mode in Discord) [17:14] @kyra : Ok I updated https://wiki.scummvm.org/index.php?title=Project_Services and also wrote a Discord article: https://wiki.scummvm.org/index.php?title=Discord_Server [17:15] @kyra: https://wiki.scummvm.org/index.php?title=Discord_Server happy now πŸ˜‰ [17:16] Yeah, that's better [17:16] Thanks πŸ˜„ [17:16] Youre welcome [17:16] emmalyn (~emmalyn@c-98-210-124-136.hsd1.ca.comcast.net) left irc: Quit: Leaving [17:17] "and have operator status" no such thing in discord [17:19] emmalyn (~emmalyn@c-98-210-124-136.hsd1.ca.comcast.net) joined #scummvm. [17:24] Ok fixed [17:24] SylvainTV (~Sylvain@lfbn-lil-1-811-bdcst.w92-148.abo.wanadoo.fr) joined #scummvm. [17:24] #scummvm: mode change '+o SylvainTV' by ChanServ!ChanServ@services. [17:30] ajax16384 (~User@109.60.130.33) joined #scummvm. [17:30] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services. [17:43] Since ScummVM supports SDL GameControllers now on all platforms using the SDL2 backend, it would be nice to implement the first person control scheme globally, as it exists on the PSP. It is described here under " 1st Person Game Mode (Can be ignored by most users):" [17:43] https://wiki.scummvm.org/index.php?title=PlayStation_Portable [17:43] The trigger would be R+L+X [17:43] To switch between control modes. [17:44] It would allow easier control of Lands of Lore, Xeen etc. [17:45] I used it on the PSP and it is very helpful for these types of games. Basically it maps the keypad keys in a slightly different way and includes shortcuts to bring up character screens quickly. The Image Viewer is not needed I think. [17:47] it allows navigating through the dungeon using the dpad. [17:47] left right turns the party instead of strafe. [17:47] R/L strafes. [18:08] i'd call it "tank controls" πŸ˜‰ [18:08] Hmmm.. tanks but no tanks. πŸ˜ƒ [18:09] that was basically telltale's answer to gamepads [18:22] Well it would be an optional thing. It would be activated bey pressing R+L+X and could be de-activated the same way. [18:23] Sounds like an interesting idea, indeed [18:25] What timespin between ScummVM public versions? As I understant current public stable is 2.0.0. from december 2017. Or you have specific targets for new versions you want to achive? [18:27] ParkerR (ParkerR@unaffiliated/parkerr) left irc: Ping timeout: 276 seconds [18:27] It varies depending on what new stuff is available for release. Currently, Blade Runner is so close to being completed, that the tentative plan is for the next release to be scheduled once it's hit stable. [18:28] and after that, I think we should start releasing more often πŸ˜› [18:29] I concur. The World of Xeen engine has been waiting for release for too long πŸ˜ƒ [18:30] Thanks for answer! And yes, WoX is something I realy waiting, great job! By the way, different ports of ScummVM updating not same time, right? Like There release of new versions on some platforms and then on others after a while? [18:33] Thanks :). I'm vaguely aware that there are indeed some unofficial builds of ScummVM, such as for Debian and Libretro.. I think was mentioned by a user the other day. They're not officially supported by the group, so it'd be up to their maintainers to update whenever. [18:34] Also, of course, we've had issues in the past with particular systems no longer having anyone to actively maintain them, so they no longer got the newest versions [18:34] Poor old Palm Pilot.. rest in peace. 😦 [18:35] Thanks again! ||I'am in particular was interested in andoid version|| [18:35] Zadroter: You probably now this already, but the development builds from the buildbot are working very well on most platforms, and they are always up to date here: buildbot.scummv.org/builds.html [18:36] Yes, thank you. [18:36] Sorry meant https://buildbot.scummvm.org/builds.html [18:38] ParkerR (ParkerR@znc.withg.org) joined #scummvm. [18:38] ParkerR (ParkerR@znc.withg.org) left irc: Changing host [18:38] ParkerR (ParkerR@unaffiliated/parkerr) joined #scummvm. [18:40] How is a protected var in a single instance class better than a var declared static in the same .cpp file? [18:40] And why would anyone consider the latter as "better" than the first? [18:42] I know that people say global vars are bad, but it seems to me the vars starting with underscore in ScummVm are similar to globals. The only difference is they exist in the class namespace vs. static vars which exist in the compilation unit namespace. [18:42] Because the computer doesn't need to allocate space for it in memory everytime ScummVM is run, even if that particular game isn't run. It's only allocated when the game runs and the class is instantiated [18:42] Since classes are usually contained in single compilation units, I don't see the point. [18:42] Are ok, I think I get it. [18:43] Also, similarly, it's why we don't allow global objects. Because they need to get instantiated every time ScummVM runs, even if the game isn't being played. So too many of them could end up slowing down startup [18:44] So if I want the functionality of a global, the trick is to use an underscored var and make it a protected data member of the class it is used in. [18:45] what's your definition of "global" exactly [18:45] Right. I have a tendency to stick a whole bunch of variables I want to be effectively global into the engine class, and then have the engine's constructor set a global "g_vm" static pointer to point to itself. That way I can access the "globals" by simply doing g_vm->_globalVar [18:45] So for the 1st person controls, it would be a protected member of SDLEventSource called _firstPersonControlsActive or something like that. [18:46] But wouldn't you be able to access them via _globalVar directly? Why do you need the pointer? [18:46] I'm not really familiar with the underlying backend code much. But if you're suggesting adding fields directly to the SDL code, that's probably a bad idea. Particularly since not all backends use SDL [18:47] ANd isn't the global g_vm pointer again, a global, therefore not allowed? [18:47] Because the pointer is useful if you need to refer to them from other classes. Where possible, I like to split up the logic of an engine into separate classes, like one for events, one for screen handling, scripts, etc. so rather than having to juggle around engine pointers, it's easier to have a single global engine pointer. [18:48] Particularly when the class hierarchy starts getting more complicated, such as having classes for individual hotspots and objects, contained in arrays that are themselves contained by a parent "Scene" class, it became a nightmare trying to pass around engine pointers to everything [18:49] a global is allowed if it's a pointer rather than an actual object. And a single global pointer per engine is perfectly okay πŸ˜ƒ [18:49] I see. Since the controls I am considering are only available via SDL_GameController objects anyways, and the _controller is a protected member of SDLEventSource already, I think the _firstPersonControlsActive var should also be declared there [18:50] just like the _km keyboardmodifier data member, which is used currently to do the "slow mouse" modifier with R shoulder button, etc. [18:51] I could program this and make a PR pretty quickly if I didn't have so much RL work to do 😦 [18:51] We also discourage globals because, particularly if they need to have initial values, it'd get messy if you want to play a game, return to the launcher, and then play it again.. the globals wouldn't be reset unless you had code to properly reset them. So it's cleaner to have everything in your engine class, because each time the game is run, it'd get properly reset. That's actually a problem with Tinsel engine for Discworld, for [18:51] example.. we don't allow it to be replayed from the launcher simply because of the number of messy globals that lose their default values after the first time you play [18:52] Sure, doing a PR sounds like a good idea. As I said, I'm unfamiliar with the backends, so I can't really offer any constructive feedback. A PR will help with that [18:52] there already exists one master global: g_engine [18:52] Also of course I would need to track both R and L shoulder being held down, which currently would require another two underscore vars: _rButtonHeld and _lButtonHeld or some such πŸ˜ƒ [18:53] Right, but that isn't of the specific engine type. So it's messy to use, since you' d need to keep casting it to your engine type so you could access your engine's variables. Cleaner to define a g_vm * in your engine that's explicitly of your engine type [18:54] I see what you mean. [18:54] just make it an union of pointers! that's totally not a bonkers idea [18:54] But here this is more like a global controls thing, e.g. the _controller based inputs are even active in the menu etc. [18:54] everytwhere. [18:54] also not to forget that the constructor call for non local static objects are not really defined when they are called in c++ (somwhere before main() and the first time a function/object of that class is used) [18:56] Right. In fact, if I remember correctly, some of the older compilers even had trouble properly calling the constructors for global objects at all. Though I don't think that's a problem any longer with any of the compilers we're currently using. But it was yet another reason not to use global objects [18:56] @rsn8887 just because something only exists once and is available everywhere doesn't necessarily mean it should be "global" [18:57] the real question is "once or up to once" [18:57] it's about encapsulation. what needs access to that data where. why make something "global" if only the backend events need to know about it [18:58] hi guys [18:58] Hello [18:58] Sup dude [18:59] not much.... Having a beer, watching a game... what about you? [19:00] Enjoying a brief spurt of new development at work before lunch, before I end up spending the afternoon writing tests to validate the simple change. ;P [19:00] oh, you're still writing tests :/ damn [19:01] Yes, I just finally finished tests for the last "simple" development a few minutes ago. [19:01] Also dreammaster, I have technical question: how much mm3 and wox engines are different? I always thought they used basicly same engine with some few additions. [19:02] that makes me think I should be able to send you my SQL now, if you still want to compare our craziness :) [19:02] i like how everyone apparently spends their days lost in enterprise coding and escapes into the night to do games coding instead πŸ˜› [19:03] Well, it's certainly nice to be able to unwind with something I know I can do at my own pace, and never have to write test cases for πŸ˜ƒ [19:03] SupSuper :D [19:04] @rsn8887 Out of curiousity, have you looked at ResidualVM's joystick handling? https://github.com/residualvm/residualvm/blob/master/backends/events/sdl/resvm-sdl-events.cpp [19:05] on the topic of g_engine, i find a lot of needless uses of the variable [19:06] i don't mind the variable. but it's needless clutter. [19:06] i'd love for test cases to tell me what i'm aiming for πŸ˜› [19:07] like half the uses are from within a subclass of Engine itself. it already has the pointer it needs: this [19:07] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [19:07] currently i have two big thorns on my side: 1. how do you figure out the framerate of a game 2. how do you figure out the graphics effects of a game [19:08] @ccawley2011 : I am looking at it now. I see you use static bool l2Pushed = false, r2Pushed = false; in a member function. Is this allowed in ScummVM, it would make this much easier. [19:08] "figure out"? sometimes there isn't an answer! the game will run as fast as it can. and otherwise it's just a hardcoded target [19:08] SupSuper: For the framerate: make your engine sleep variable durations [19:09] I guess the static bool solution is exactly what I was looking for. Thanks. [19:09] SupSuper: example: compute the number of ms since the last frame, then sleep 20-x ms [19:09] and "graphics effects" is so vague that I can drive a truck thru it. sideways. [19:09] => 50fps [19:09] rsn8887: Not if you can avoid it. Or only if it won't cause problems if, in a game, returning to the launcher and restarting the game it won't cause issues. [19:10] So a static bool within a function would be bad if you wanted some game logic to trigger only once for example. [19:10] Backend code it may not be so bad [19:10] local statics are troublesome for threading and reentry anyway [19:10] sorry, i mean the framerate of animations, movements, etc. not blits per second πŸ˜ƒ [19:11] I think in the backend it would be perfect. I dont think the SDLEventSource is ever destroyed (what happens to statics when the class is destroyed?) [19:11] movement is usually not done as a framerate. it's distance over time. so subpixels per frame usually [19:11] like there's timing values but it's hard to figure out their "unit" just from looking at disassembly [19:11] or if they are really fancy, as an acceleration: distance over time squared [19:11] Generally most games are keyed around "game frames". So you just need to figure out what the game frame rate is. At times I've just guessed as a proper rate, and then adjusted it later until the game looks like it plays at the same speed as the original [19:11] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 248 seconds [19:12] heck, they can even opt for a full physics system and do a force. [19:12] Or even a little faster if I thought the original was too slow πŸ˜‰ [19:12] jamm (~jam@unaffiliated/jamm) left irc: Ping timeout: 258 seconds [19:13] as for animations, there is usually data in the animation itself stating how to control the timing. it is not uncommon for different frames in an animation to have different display times [19:13] as for graphical effects, stuff like color blending, shadows, scaling, etc. since this is a 16-bit game, so no alphas or palettes. are there any "common" algorithms for these i can just compare to, i doubt they use anything modern like bicubic etc [19:13] blending is usually gamma incorrect linear interpolation on a per color channel basis [19:14] scaling is a sampling problem. it's a 2d resampling of a source image [19:15] sample and hold is a common resampling algorithm. but it is easily mixed up with nearest neighbor, which is nearly identical [19:16] I bet some ScummVM game engine has already implemented these effects. [19:16] i'm with rsn here [19:16] So you might not have to re-invent the wheel. [19:17] But I am not an engine person. [19:17] I have only worked sporadically on backend stuff [19:17] ManagedSurface has some logic for arbitrary scaling and alpha handling [19:17] i think i saw some blending stuff only yesterday. [19:18] basically i'm not very good at disassembling algorithms from scratch, so i usually try to figure out the "big picture" instead, compare to some reference algorithms and see if the result is the same. has worked out so far πŸ˜› [19:18] specially since i'm working with a windows port of a dos game so there's a lot of directx conversion noise [19:19] That's not a bad thing. I've done similar stuff for some of the games' memory management. A lot of the old games had lots of stuff for using extended/expanded memory, shifting pages in and out of main memory, etc. that aren't needed anymore. I just said.. looks like a memory allocation routine. I'll just use new byte[] instead πŸ˜ƒ [19:20] just hope that the game is well programmed and doesn't depend on bugs in its own heap manager [19:21] this game just stores everything in fixed-size arrays searched by id, tempted to replace it all with hashmaps [19:21] Heh. I remember back when we first worked on converting the Tinsel code for Discworld.. there was a static global variable with a comment above it saying something like "Leave this variable in. It isn't used, but the game crashes when we remove it. So we're leaving it in" πŸ˜ƒ [19:23] During my studies, I had to add such a comment. Because the presence of the comment at this place made a difference between crashing or not... [19:23] i would love to know the "comments" behind their code decision sometimes... [19:24] PArticularly for the gob engine [19:24] at a certain point of complexity programs just seem to leave the realm of determinism so you better stop breathing on it once it decides to work [19:25] don't mention determinism, that makes me think of recorded inputs that desync [19:25] πŸ˜„ [19:25] @DreamMaster : Sounds like a memory alignment issue? I never understood these __alignment compiler directives. [19:26] because someone was too accurate in the math [19:26] So by adding a static, the memory alignment somehow changed... [19:26] here's an example of color blending (the ui) if the algorithm jumps out at you [19:26] https://cdn.discordapp.com/attachments/581224061091446795/588811409564106775/unknown.png [19:26] ALthough the compiler shouild optimize away an unused var [19:26] Looks like a straight alpha blend? [19:26] emphasis on "should" [19:26] These days yes, but some of the games back in the DOS days were really primitive [19:27] one thing to keep in mind when dealing with alpha is premultiplied colors [19:28] Gotta go AFK for lunch. BBL [19:28] summons [md5] [19:28] Argh [19:28] since part of the blending involves a multiplication with the alpha channel of the same image that you are drawing, some people precompute the value after the multiplication and store that instead. [19:28] Just missed dreammaster [19:28] i know that from my time with flash [19:28] yep, indeed :/ [19:29] Begasus (~begasus@ptr-4qba4e9h9fwpesydlle.18120a2.ip6.access.telenet.be) left irc: Quit: Ex-Chat [19:31] i tried alpha blending but it doesn't look as colorful [19:31] if it ends up being a CLUT i'm gonna be pissed [19:32] did you check if it's premultiplied? [19:33] how? [19:34] instead of this: cpp out.x=out.x*(1-in.a)+in.x*in.a do this: cpp out.x=out.x*(1-in.a)+in.x [19:37] whiterandrek (~CVoltage@ppp-109-104-179-20.wildpark.net) joined #scummvm. [19:37] #scummvm: mode change '+o whiterandrek' by ChanServ!ChanServ@services. [19:56] https://i.imgur.com/VRpijZp.png close enough [19:57] the bevels werent included in the image? [19:58] i'm just drawing alpha rects [19:58] there's no sprites for the ui bevels, they're probably generated in runtime [19:59] in the original there seems to be another smaller alpha rect drawn on top [19:59] it's a bevel, the window and buttons have it. but it's all done in code, the background is just this: https://i.imgur.com/HJ854n0.png [20:00] so i'm just trying to guess something competent-looking for now [20:01] here's another example of ingame ui: https://i.imgur.com/ZASgKsq.png [20:01] i dunno why they did it like this, it just looks like a mess πŸ˜› [20:11] I guess it's just the risks designer used to take in the past against a growing community of gamers :blobtonguewink: [20:12] Nowadays there are far more games and we have great examples of design that we can take inspiration from, so that kind of designs stand out because they're different [20:13] i think everything about this game can be summed up as "it looked cool at the time" [20:13] Exactly! [20:16] Plus, I don't recall a classic game using a transparent background for the menu [20:38] [scummvm] rsn8887 pushed 1 new commits to master: https://git.io/fj2EK [20:38] scummvm/master 536521d rsn8887: SWITCH: Enable touchpad mouse mode option in controls [20:38] Zadroter: Sorry, missed your question earlier. It's my understanding as well that the mm4/5 engines is mostly the same as from mm3. I just haven't disassembled the game yet to figure out what the differences are. I may well do so eventually [20:40] There's now an option on the Switch port (under controls) to enable/disable touchpad mouse mode. [20:41] explanation is here (under controls): https://wiki.scummvm.org/index.php?title=Nintendo_Switch [20:42] Should be in next nightly [20:44] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [20:56] @SupSuper : I think it still looks cool today. [20:57] @DreamMaster Okay, thanks. ||By the way you can ping people in discord with @ symbol!|| [20:57] Oh, right. Thanks for pointing that out. I should have realized that already with how much I use Slack at work. [21:01] Sad that from what I know, MM1-2 is compleatly different engine. ||ScummVM don't support Eye of the Beholder 3 in builds too, right?|| [21:04] Yes, they're definitely different engines. My long long term plan is to see all of them supported. But for the time I spend on RPGs, the Ultima series is my priority right now. As of Eye of the Beholder 3, no it doesn't currently support. I do have a fork with an implementation of the engine, since the original source was released some years back (at least the in-game game, not the titles). But there was some frustrating bugs in the [21:04] script interpreter that I wasn't able to track down, so I put in on hiatus. [21:05] I'll probably return to it eventually. It's just there are so many games, so little time. ;P [21:05] whiterandrek (~CVoltage@ppp-109-104-179-20.wildpark.net) left irc: Read error: Connection reset by peer [21:07] i feel ya. i actually thought scummvm would provide more of a "scaffolding" for engines since they're all oriented around adventure games and thus share similar elements. but since every game is basically a brand new work from scratch, it's a hell of an effort [21:07] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Remote host closed the connection [21:08] Yes, they're definitely different engines really interesting! I always thought they was same. So looks like when Westwood abadoned SSI, they keept engine with them. Interesting if Lands of Lore 1 uses same engine that Eye 1-2 uses But for the time I spend on RPGs, the Ultima series is my priority right now Wonderfull news! Really wonderfull! Ultima had some opensource projects but all of the as I know now abadoned, only Ultima 4 was [21:08] playable if I recall correctly. [21:08] Yeah, ScummVM is very powerfull thing already, and if you continue your brilliant work it will be the best thing on this planet! [21:08] Right. Even if ScummVM provided a framework, it'd be a lot harder to refactor an original game to use it then simply reimplementing code that basically does the game similar to how the original did things. Which is why we have things like games with dozens of different event handling loops for different dialogs, when things like a common event dispatch for the entire game would be cleaner. [21:10] Regarding Ultima yes, xu4 was up to a beta stage from what their website said. I plan to work my way through the earlier games. Though the work is temporarily on hiatus as well whilst I work on ScummGlk, adding support for interactive fiction games to ScummVM. [21:11] My Ultima 1 engine for ScummVM has most of the main game support, with most of the outer space logic still to be disassembled. [21:13] Great! Only truoble I see is that there a lot different versions of 1-5 ultima games and also many fan patches and all things like this [21:13] Ultima 1 was weird! πŸ˜ƒ [21:16] True. My plans for the future will only really be focused on supporting the PC versions. The various fan patches may actually prove easy to support, since they generally make only minor changes to the executable code. One of the benefits of having the games in one codebase will that it will be easier to support things like this. I already have code written in the Ultima 1 codebase to make it possible to slot in the Ultima 6 tileset, at [21:16] least for the overworld. I figure it will make for a cool "Ultima 1 Enhanced" πŸ˜ƒ [21:17] I'll just have to figure out which tiles from Ultima 6 to repurpose for which original Ultima 1 ones [21:21] Yeah, fan patches mostly add music from Commodore/amiga/apple computers to older games where it was not supported and new tilesets of graphics [21:22] Interestingly, Ultima 5 version for NES (which is terrible by the way) had graphics sets thet tried to mimic Ultima 6 style https://www.mobygames.com/images/shots/l/43284-ultima-v-warriors-of-destiny-nes-screenshot-castle.gif Always wanted to try play good pc version with this set of graphics, so really neat idea! [21:25] Cool. I hadn't really investigated all the different versions of Ultima that there are. Though I was vaguely aware that there was a terrible NES/SNES version of Ultima 6 that cut out the player's party and stripped a lot of the game out [21:26] Yeah, Ultima is one of the most ported series of games. Anyway, thanks for answers and for your work! Probably I should make video about project for mine russian subscribers. [21:27] πŸ‘ [21:31] i never liked ultima πŸ˜› underworld was more fun [21:32] now there's a game unlikely to get a modern port [21:36] ajax16384 (~User@109.60.130.33) left irc: Quit: Leaving [21:37] Praetorian|str (~antoniou@2a02:587:790d:3f00:e97d:178f:f17d:2352) left irc: Quit: Leaving [21:38] Agreed. Interestingly enough, there's been a recent release of a fan-made map editor for it [21:42] I never understand why Ultima didn't have smooth scrolling. Even in Pagan the scrolling was so stuttery. On consoles, tilebased RPGs like that almost always scrolled smoothly. [21:42] Maybe the programming was just really inefficient. Wouldn't surprise me. [21:43] It was Richard Garriot behind it, I don't think he was a genious coder. [21:43] Or maybe PCs at the time were too slow. [21:44] Nevertheless the games were kind of open world. [21:44] pc's were too slow for smooth scrolling. consoles had built-in sprites, background layers, etc, you could just offset. pc you had to redraw everything yourself, so redrawing on tile boundaries was cheaper [21:45] commander keen was the first smooth scrolling pc platformer in 1990, and that took the genius of carmack to pull off πŸ˜› [21:45] A shame really, because the stuttery scrolling really affected the gameplay, it felt laggy and unresponsive to me. [21:46] Haha Commander Keen I think only used a small portion of the display, too. [21:46] i duno, my first pc had hardware acceleration for the graphics despite only running win 95 [21:46] mind, it wasn't 3d acceleration, just 2d [21:46] now there's a game unlikely to get a modern port System Shock 1 was ported and updated by nightdive studios, and it used same engine as UU1-2. Only problem is Ultima series copyrights. I don't know who own them now. EA? i never liked ultima Sad! 4 and epessialy 5 is really great games! commander keen was the first smooth scrolling pc platformer in 1990, and that took the genius of carmack to pull off And after that we had many platformes [21:46] on PC! JazzJackrabbit, Duke Nukem etc. [21:47] if nobody is sure who owns the rights, just sue them to make them figure it out [21:48] EA owns ultima, it's even on origin πŸ˜› [21:48] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [21:49] @Henke37 this was in the 80s, by the 90s hardware picked up a lot of the slack [21:49] Nightdive studios trying now to get rights for "No one lives forever" it's even on origin Yes, it was funny to me to know they use old long dead company name as name for shop. Anyway, yeah, I think that Ultima Underworld with it's advanced 2,5D engine is out of scope for SummVM as I understand [21:49] While classic 1-8 ultimas are 2d [21:51] to put it quaintly, early pc's could have a lot on the screen so long as it didn't move much, while consoles could have little on the screen but it could move a lot. this is why the former leaned to slow-paced genres like adventures and rpgs while the latter was more actiony platformers [21:52] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Remote host closed the connection [21:53] well, until doom came around anyways πŸ˜› [21:55] framebuffers vs realtime rendering [21:55] IBM PC platform was primary for offices and work with text and numbers untill late 80s-early90s. Commodore for example forcused on graphics and games more. I think only when IBM PC clones started to massively use 256-color SVGA it start to become something big for games. [21:56] Good old 320x200 mode [21:57] yeah vga was just a framebuffer (or several), so if you wanted to move a sprite from 0,0 to 20,20 you had to redraw those screen regions. on platforms with hardware sprites you just changed the position value [21:57] Good old 320x200 mode Yeah. Why you need more? [21:58] "640K ought to be enough for anybody." [21:58] commodore had much more hardware support for graphics yeah. ibm ended up winning not because they were particularly good, just because they were a lot cheaper and open [21:58] yeah vga was just a framebuffer (or several), so if you wanted to move a sprite from 0,0 to 20,20 you had to redraw those screen regions. on platforms with hardware sprites you just changed the position value If I remember correctly, Sprites technology on commodore computer become avalible from Commodore 64. This is one fo reasons why it was most popular computers of 80s. [21:59] ibm ended up winning Well, IBM loosed. Dudes who started to make 9000 IBM clones - won lol [22:00] well we still call them ibm-pc's now so clearly they won πŸ˜‰ [22:01] IBM-PC clones, for bad or for good. IBM tried to introduce their IBM PC/2, but it ... not failed, but was now just one among hundreds of competitors [22:03] https://www.youtube.com/watch?v=DnletG9UC-8 - this is example of what you can achive on Commodore 64. Some crazy man porting Eye of The Beholder on C64 and it is already work to some degree! [22:09] rsn8887, Commander Keen was fullscreen. [22:13] yes. compare and contrast: https://www.youtube.com/watch?v=CyTDI2ATb6k https://www.youtube.com/watch?v=c4a3_wazRPA [22:47] Someone should make an engine for ScummVM as a joke πŸ˜ƒ (or as a real engine?) [22:48] Those games were awesome [22:50] I readed in FAQ or somewhere thst ScummVM only focusing on adventure games and 2d RPG games, not platformers πŸ€” [22:50] but look, there's an inventory right there πŸ˜‰ [22:50] It looks like an adventure game to me... [22:50] In theory, of cource, all RTS games from Dune 2 to starcraft is 2d πŸ™ƒ [22:51] Tiberian sun alredy using voxels so no-no [22:55] and there's already engines for those πŸ˜› [22:56] Well, for westwood ones yes, but for Warcraft 1-2 and starcraft i don't remember. There was but I feel like they was abadoned [22:56] blizzard is very litigious [22:57] From Blizzard, I particularly love Blackthorne [22:58] i believe there's some mods for running blizzard rts on stratagus [22:58] when in doubt check https://osgameclones.com/ [22:59] ny00123 (~ny00123@213.137.91.167) left irc: Quit: Leaving [23:01] Funny, this list in Duke nukem 3d don't list GDX. Primary for blood, now GDX become universal build engine port with support of almost all Build engine game. But cool site. I remember it more primitive, they updated thier desighn [23:01] From Blizzard, I particularly love Blackthorne Yes, cool Prince of persia with orks and demons and gungs. [23:01] yeah they have a github you can submit corrections to [23:10] _sev (~sev@scummvm/undead/sev) left irc: Read error: Connection reset by peer [23:11] _sev_ (~sev@scummvm/undead/sev) joined #scummvm. [23:11] #scummvm: mode change '+o _sev_' by ChanServ!ChanServ@services. [23:22] I played through Black Thorne a while ago. It is very fair and a lot of fun once you get the hang of it. [23:23] Out of curiosity, how hard was it to re-implement that 3D Voxel Engine that is used for the main character in Blade Runner? Must have been a nightmare. [23:23] i always messed up the bombs πŸ˜› fair but unforgiving if you waste any item [23:24] Yes you must not waste bombs. But there are many secret rooms behind waterfalls, or going the wrong direction on elevators etc, where you can stock up. [23:25] Another thing I like about the game: the secret rooms. Prince of Persia had many of those, Flashback and Another World had zero secrets. [23:25] _sev_ (~sev@scummvm/undead/sev) left irc: Ping timeout: 244 seconds [23:25] I love secrets in games. Like the secret chests in God of War games. So much fun to find them here and there. [23:26] Behind the camera etc. [23:26] classic trick to hide them just behind level start πŸ˜ƒ [23:28] _sev_ (~sev@scummvm/undead/sev) joined #scummvm. [23:28] #scummvm: mode change '+o _sev_' by ChanServ!ChanServ@services. [23:32] Black Thorne for me felt like it was inspired by ultima for some reason lol I learned about ResidualVM, is this project have relation with ScummVM? [23:33] Yes, ResdiualVM is an offshoot of ScumMVM, specialising in 3D adventure games [23:34] It has extra framework for handling 3d graphics that the games use. Something that might not be possible for all the systems the main ScummVM supports [23:37] Ah, so there technical reasons why you can not throw everything inside scummVM. Thanks. Sorry for dumb questions, I'am not a programmist [23:38] No worries [23:39] rsn8887, I loved those secret areas in PoP too ^_^ [23:46] uh anyone good with color theory [23:47] As artist thing or programming thing? [23:49] i found this game's "color blend" formula and it looks something like this: *c = *(a + (((*c >> 8) >> 2) & 0x3E) + 8448) | *(a + ((*c & 0x7E0) >> 4) + 4224) | *(a + (*c & 0x1F)) [23:49] christ [23:50] Sounds like an RGB565 conversion. [23:50] Maybe. Or something that. I've had cases dealing with 16 bit modes where the pixels were packed up like that, with the R, G, and B portions held in a subset of bits [23:53] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) joined #scummvm. [23:54] yes this game is RGB565. what i don't get is the additions [23:55] Yeh, that doesn't make sense to me as well [23:56] for clarity, c is a rgb565 color and a is some kind of LUT [23:57] Maybe try searching in the scummvm source for any occurances of either the decimal or hexidecimal versions of the numbers.. see if you can come up with any other backend code or engine doing something similiar with the same constants.. it may help you figure out what's going on [23:57] yuv422 (~yuv422@119-18-0-84.771200.syd.nbn.aussiebb.net) left irc: Ping timeout: 245 seconds [00:00] --- Fri Jun 14 2019