[Back to Index]

  
[00:05] <Scummette> scummvm/master 5a5c693 sev-: DIRECTOR: LINGO: Process continuation symbol in strings
[00:05] <Scummette> [scummvm] OMGPizzaGuy opened pull request #2250: ULTIMA8: Fix loading of game saves after music process rename. (master...u8_savegame_fix) https://git.io/JfBdA
[00:12] <Scummette> [scummvm] mduggan closed pull request #2250: ULTIMA8: Fix loading of game saves after music process rename. (master...u8_savegame_fix) https://git.io/JfBdA
[00:12] <Scummette> [scummvm] mduggan pushed 1 new commits to master: https://git.io/JfBFO
[00:12] <Scummette> scummvm/master 8c1321c OMGPizzaGuy: ULTIMA8: Fix loading of game saves after music process rename.
[00:14] <Scummette> [scummvm] OMGPizzaGuy opened pull request #2251: ULTIMA8: More custom type checking cleanup (master...u8_type_check_cleanup2) https://git.io/JfBFG
[00:44] --> crns joined #scummvm.
[01:05] <-- SylvainTV left irc: Read error: Connection reset by peer
[01:37] --> DominusExult joined #scummvm.
[01:37] <-- DominusExult left irc: Changing host
[01:37] --> DominusExult joined #scummvm.
[01:40] <-- Dominus left irc: Ping timeout: 256 seconds
[01:40] Nick change: DominusExult -> Dominus
[01:42] --> dreammaster joined #scummvm.
[01:42] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services.
[03:24] <Scummette> [scummvm] dreammaster pushed 2 new commits to master: https://git.io/JfBhj
[03:24] <Scummette> scummvm/master d342098 dreammaster: ULTIMA4: Janitorial for switch idioms
[03:24] <Scummette> scummvm/master 7296f24 dreammaster: ULTIMA4: Redraw stats after full stats cheat action
[04:47] <-- dreammaster left irc:
[06:07] <Scummette> [scummvm] digitall pushed 1 new commits to master: https://git.io/JfRkq
[06:09] --> grogbot joined #scummvm.
[06:10] <grogbot> <rootfather> Grogbot should be fixed
[06:10] <grogbot> <rootfather> The bridge tends to become unresponsive after a couple of weeks, most likely after irc gets a netsplit and it won't properly reconnect
[06:12] <-- Harekiet left irc: Ping timeout: 246 seconds
[06:55] <-- yuv422 left irc: Remote host closed the connection
[06:55] --> yuv422 joined #scummvm.
[06:55] #scummvm: mode change '+o yuv422' by ChanServ!ChanServ@services.
[06:55] <-- yuv422 left irc: Remote host closed the connection
[06:56] --> yuv422 joined #scummvm.
[06:56] #scummvm: mode change '+o yuv422' by ChanServ!ChanServ@services.
[06:56] <Scummette> scummvm/master de7d1f9 digitall: DRAGONS: Fix Remaining GCC Compiler Warnings
[06:56] <Scummette> [scummvm] digitall pushed 1 new commits to master: https://git.io/JfRt4
[06:56] <Scummette> scummvm/master 19563ca digitall: TINSEL: Fix Shadowed Constructor GCC Compiler Warning
[06:56] <-- BeefEats left irc: Read error: Connection reset by peer
[07:00] <-- Lightkey left irc: Ping timeout: 260 seconds
[07:14] --> Lightkey joined #scummvm.
[07:31] <grogbot> <akaWolf> > this may be a dumb question, and is more of a general programming question, but does anyone know if c++ has any sort of spread operator or function? I need something like that to write the ADGameDescription[] for vileVN @monyarm you can use list as a function argument and merge lists when you call it
[07:34] <grogbot> <monyarm> I actually ended up just using #define macros to do it. Anyways, Question, i've got ida files, adresses and parameters/return values of different functions, and some completely RE'd functions, but since i use Ghidra, and the guy who did the reverse engineering used ida pro, i can't just import his work. Is there any way for me to make use of his work, so i don't have to start from scratch?
[07:34] <grogbot> <akaWolf> don't see any reasons to use macroses in that case
[07:35] <grogbot> <akaWolf> if you have C++11 and higher
[07:37] <grogbot> <monyarm> so i can do something like this #define PROBENOCTURNALFULL(platform, lang) \ { "nocIll", \ 0, \ AD_ENTRY1s("mug0.dat", NULL, -1), \ lang, \ platform, \ ADGF_NO_FLAGS, \ GUIO1(GUIO_NONE) } #define PROBENOCTURNALLANG(lang) \
[07:37] <grogbot> PROBENOCTURNALFULL(Common::kPlatformWindows, lang), \ PROBENOCTURNALFULL(Common::kPlatformLinux, lang), \ PROBENOCTURNALFULL(Common::kPlatformPC98, lang), \ PROBENOCTURNALFULL(Common::kPlatformMacintosh, lang) :kPlatformMacintosh, lang) #define PROBENOCTURNAL() \ PROBENOCTURNALLANG(Common::EN_ANY), \ PROBENOCTURNALLANG(Common::JA_JPN), \
[07:37] <grogbot> PROBENOCTURNALLANG(Common::PT_BRA), \ PROBENOCTURNALLANG(Common::PT_POR), \ PROBENOCTURNALLANG(Common::RU_RUS), \ PROBENOCTURNALLANG(Common::FR_FRA) and not have to type 20 different versions, just for one game
[07:40] <grogbot> <SupSuper> @monyarm https://revers3c.blogspot.com/2019/04/import-ida-pro-database-into-ghidra.html
[07:41] <grogbot> <monyarm> thanks
[07:46] <grogbot> <ZvikaZ> Has anyone tried to reach out for Ghidra and suggest improvements? (it will take time, but eventually the tool will probably improve) I have never used neither if the tools, but reading the discussion here, it sounds that in the long it's the most promising way to go...
[07:53] <grogbot> <sev> @DreamMaster I think, we have no choice but switch to Pro
[08:02] <Scummette> [scummvm] sev- closed pull request #2249: DIRECTOR: LINGO: Array comparison fixes (master...list-comp) https://git.io/JfBQk
[08:02] <Scummette> [scummvm] sev- pushed 3 new commits to master: https://git.io/JfRmw
[08:02] <Scummette> scummvm/master 0649b28 djsrv: DIRECTOR: LINGO: Fix parray comparison
[08:02] <Scummette> scummvm/master 1ecb21b djsrv: DIRECTOR: LINGO: Handle array equality peculiarity
[08:02] <Scummette> scummvm/master 5d06013 djsrv: DIRECTOR: LINGO: Add tests for array comparison
[08:08] --> ny00123 joined #scummvm.
[08:18] <-- _sev left irc: Quit: This computer has gone to sleep
[08:19] <-- cd left irc: Quit: cd
[08:31] --> _sev joined #scummvm.
[08:31] <-- _sev left irc: Changing host
[08:31] --> _sev joined #scummvm.
[08:31] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[08:37] --> crns_ joined #scummvm.
[08:37] <-- crns left irc: Ping timeout: 272 seconds
[09:16] <grogbot> <rzil> I gave cutter.re a try and so far it seems nice (and actually somewhat beginner friendly), now let's see if I am actually able to reverse something with it
[09:48] <-- Stormkeeper left irc: Remote host closed the connection
[10:04] --> enthusi joined #scummvm.
[10:10] <grogbot> <timofonic> @sev Okay. I did read it. I have issues with "Applicants should be able to demonstrate prior technical writing experience by submitting role descriptions and work samples". My prior technical writing experience is mostly informal and mostly related to convert content. I have access to many dictionaries and have many native English speaker friends. But I have little hopes about being a GSoD applicant.
[10:15] --> spookypeanut joined #scummvm.
[10:15] <-- spookypeanut left irc: Changing host
[10:15] --> spookypeanut joined #scummvm.
[10:15] #scummvm: mode change '+o spookypeanut' by ChanServ!ChanServ@services.
[10:17] spookypeanut (spookypea@scummvm/undead/spookypeanut) left #scummvm ("Leaving").
[10:19] --> spookypeanut joined #scummvm.
[10:19] #scummvm: mode change '+o spookypeanut' by ChanServ!ChanServ@services.
[10:21] <grogbot> <timofonic> Despite maybe not having enough experience, I consider myself to be enough skilled to do it. I love reading and writing, specially anything technical and scientific. Anyway, I'll let it to better applicants if I'm not enough qualified to apply for it. Excuse me if I annoy you with all this.
[10:29] --> Harekiet_ joined #scummvm.
[10:38] --> ajax16384 joined #scummvm.
[10:38] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services.
[10:41] <-- _sev left irc: Quit: This computer has gone to sleep
[10:45] <-- spookypeanut left irc: Ping timeout: 272 seconds
[10:51] --> _sev joined #scummvm.
[10:51] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services.
[11:04] Nick change: Harekiet_ -> Harekiet
[11:05] --> vliaskov joined #scummvm.
[11:19] --> Shine_ joined #scummvm.
[11:26] <grogbot> <akaWolf> still have no clue why you guys not using Ghidra
[11:28] <-- yuv422 left irc: Remote host closed the connection
[11:28] --> yuv422 joined #scummvm.
[11:28] #scummvm: mode change '+o yuv422' by ChanServ!ChanServ@services.
[12:10] <-- yuv422 left irc: Remote host closed the connection
[12:11] --> yuv422 joined #scummvm.
[12:11] #scummvm: mode change '+o yuv422' by ChanServ!ChanServ@services.
[12:25] <Scummette> [scummvm] digitall pushed 1 new commits to master: https://git.io/JfRCx
[12:25] <Scummette> scummvm/master 3b7c579 digitall: ULTIMA8: Fix GCC Compiler Warnings
[12:53] <Scummette> [scummvm] mduggan closed pull request #2251: ULTIMA8: More custom type checking cleanup (master...u8_type_check_cleanup2) https://git.io/JfBFG
[12:53] <Scummette> [scummvm] mduggan pushed 2 new commits to master: https://git.io/JfRle
[12:53] <Scummette> scummvm/master a8c1f8e OMGPizzaGuy: ULTIMA8: Remove unused IsOfType string-based methods
[12:53] <Scummette> scummvm/master 1dcdb0f OMGPizzaGuy: ULTIMA8: Remove p_dynamic_cast template function
[12:59] <-- Shine_ left irc: Read error: Connection reset by peer
[13:16] <Scummette> [scummvm] ccawley2011 pushed 1 new commits to master: https://git.io/JfRl9
[13:16] <Scummette> scummvm/master fd0741b ccawley2011: RISCOS: Fix missing include
[13:28] --> spookypeanut joined #scummvm.
[13:28] <-- spookypeanut left irc: Changing host
[13:28] --> spookypeanut joined #scummvm.
[13:28] #scummvm: mode change '+o spookypeanut' by ChanServ!ChanServ@services.
[13:33] --> Shine_ joined #scummvm.
[13:36] --> cd joined #scummvm.
[13:42] <Scummette> [scummvm] ccawley2011 opened pull request #2252: ANDROID: Set a default path for PKG_CONFIG_LIBDIR (master...android-pkg-config) https://git.io/JfR8A
[13:44] <-- brooksy left irc: Ping timeout: 256 seconds
[13:48] <-- Shine_ left irc: Read error: Connection reset by peer
[13:49] --> criezy joined #scummvm.
[13:49] #scummvm: mode change '+o criezy' by ChanServ!ChanServ@services.
[14:07] --> Shine_ joined #scummvm.
[14:33] <grogbot> <timofonic> @akaWolf As a user, I dislike the programming language choice of the project (Java). I avoid all Java software for different reasons, unless there's no option. But i'm still a very novice wannabe programmer to be able to contribute something valuable in even a project smaller than ScummVM, IMHO. I'm not sure if there's more skilled people here that share the same or similar opinion about Java.
[14:34] <grogbot> <timofonic> Ghidra is developed by NSA, but it's FOSS :P
[14:51] --> SylvainTV joined #scummvm.
[14:51] #scummvm: mode change '+o SylvainTV' by ChanServ!ChanServ@services.
[15:27] <girafe> hello, do you know if we can play maupiti island and mortville manor with scummvm ?
[15:32] --> systwi joined #scummvm.
[15:32] <-- systwi_ left irc: Ping timeout: 240 seconds
[15:34] <-- ny00123 left irc: Quit: Leaving
[15:46] <grogbot> <ZvikaZ> @timofonic do you also avoid Android phones because of this? From user's perspective, why do you care which technology the developer chose to use? It's his problem... If he's talented, he'd create good software using crippled technology, and if he doesn't know his job, the technology won't help him.
[15:48] <grogbot> <ZvikaZ> BTW, I also try to avoid Java - but from the programmer's perspective. When I'm using a program, I rarely even know what programing language(s) was used
[15:59] <grogbot> <DreamMaster> girafe: Mortville Manor, yes: https://www.scummvm.org/compatibility/DEV/mortevielle/
[16:00] <girafe> thanks a lot :)
[16:01] <girafe> what an amazing job :)
[16:01] <grogbot> <DreamMaster> Thanks 🙂
[16:01] <girafe> other question : which version of zak mckraken do you recommand ? generally for lucasfilm games, is it better to play atari st/amiga versions, or pc dos ?
[16:03] <grogbot> <DreamMaster> Well, I actually haven't played Zak, but GOG now sells the 256 color FM-Towns version, so that'd probably give you the best playing experience. I'm likewise not familiar with differences in the games between systems, so maybe someone else can chime in
[16:13] <-- enthusi left irc: Ping timeout: 256 seconds
[16:17] <-- spookypeanut left irc: Ping timeout: 240 seconds
[16:25] <grogbot> <trembyle> out of curiosity, has anyone ever worked on implementing a Labyrinth engine?
[16:26] <grogbot> <rootfather> As in Labyrith of Time?
[16:26] <grogbot> <trembyle> No, the LucasFilm Labyrinth
[16:26] <grogbot> <rootfather> Ah, okay. Not that I am aware of
[16:26] <grogbot> <trembyle> I think it's the only 2D lucas game that's not supported (because it's not scumm)
[16:31] <grogbot> <trembyle> actually if you include residualvm, it's the only Lucas adventure game that's not supported.
[16:35] <grogbot> <trembyle> oh, I guess you could include Infernal Machine as an adventure game, and that's not supported in ResidualVM.
[17:02] <grogbot> <monyarm> Question about porting code made for SDL to ScummVM, most things seem to just carry over (screen,surface,event), but is there any specific info on this? I'm currently trying to port the vileVN engines to my fork, and was wondering if just replacing the SDL functions with their ScummVM equivalents would be enough, or if there are some that don't have equivalents
[17:22] <grogbot> <DreamMaster> From what I've experienced thus far, most things have their equivalent, it's just a question of what degree of changes you'll need. For example, when I was converting the xu4 code, there was a single method of the sdl mixer for playing a given file, irrespective of it's format. Whereas with ScummVM, we need to know sound formats and manually create an appropriate audio stream with the data, and pass that to the mixer. We also need
[17:22] <grogbot> to do things like wrap an audio stream in a LoopingAudioStream if we want a sound to repeat multiple times.
[18:15] <grogbot> <monyarm> Looking at the vileVN source it looks like most of what i'll need to change is the file IO and the audio, the rest should work fine as is (after being switched from SDL:: to Common:: and Graphics::), vileVN has already been made to be structured somewhat similiarly so ScummVM
[18:15] <grogbot> <SupSuper> most backends wrap SDL so it's pretty easy to replace, just lookup where the SDL function has gone. it's the streams and scummvm integration that are the messiest part
[18:16] <grogbot> <SupSuper> detection, file i/o, saves, etc
[18:18] <grogbot> <monyarm> I've already converted detection, and file i/o actually won't be that difficult, as the vileVN devs have implemented something similiar to Searchman, so it'll be relatively simple (of course i'm assuming, as i've only started work on it)
[18:22] <grogbot> <aryanrawlani28> Suppose we have a vector: vector<int> v In C++, for dynamic arrays we can use it in 2 ways: 1) v.push_back(10) and this has a complementary function v.reserve(size) 2) Use it as a normal array after construction of a range of objects vector<int> v(10); v[0] = 10; v[4] = 20; I found (1) and it's functionalities.. wanted to ask if there is a way to achieve (2) in scummvm?
[18:23] <Scummette> [scummvm] sev- pushed 2 new commits to master: https://git.io/JfRwX
[18:23] <Scummette> scummvm/master 314658a sev-: DIRECTOR: LINGO: Added more test for \xC2
[18:23] <Scummette> scummvm/master 4ef5d6d sev-: DIRECTOR: LINGO: Fully reworked continuation symbol handling
[18:24] <grogbot> <monyarm> shouldn't Common::Array arr(10); work?
[18:25] <grogbot> <aryanrawlani28> I tried it a while back, it should work, but it was giving some error.
[18:25] <grogbot> <monyarm> what kind of error, cause i do (2) in a few places in my code without issue?
[18:26] <grogbot> <aryanrawlani28> I might have done something wrong with my other code then, let me see if I can get it now
[18:49] <grogbot> <DreamMaster> I think it's a confusion between "reserve" and "resize". Passing a size to the array constructor only reserves enough memory for an array that size (i.e. the same as the "reserve" method). But resize is what you want here. After you create the array, call resize(10), and then you can access the individual elements like you want
[18:51] <grogbot> <DreamMaster> At least, I think of the top of my head that's how the array constructor acts
[18:56] <grogbot> <aryanrawlani28> In C++, reserve and passing a size to constructor works differently. Reserve means it "reserves" some amount of memory and you can push_back or emplace_back with some efficiency because it doesn't need to be resized everytime. Passing a size to constructor makes the vector construct the number of objects sequentially. You can then access them via subscript operators without needing push_back. For example, vector<int> v(10);
[18:56] <grogbot> v.push_back(ele) will actually place element in 10th position, because the previous 9 elements are default allocated
[18:56] <grogbot> <aryanrawlani28> Does it work a little differently here?
[18:57] <grogbot> <monyarm> i've got SDL_GetVideoSurface() in the code i'm converting, according to the comment it forces a screen redraw, what would be the ScummVM equivalent?
[18:57] <grogbot> <DreamMaster> I think so. I'm pretty sure if currently only reserves that many elements rather than just creating them. Hence a separate call to resize is needed if you want an initial size.
[18:58] <grogbot> <aryanrawlani28> Ah I see, thanks, I didn't know that
[18:59] <grogbot> <DreamMaster> For ScummVM, at it's simplest/rawest way you can do it is g_system->copyRectToScreen and then do g_system->updateScreen() to update the screen
[19:00] <grogbot> <DreamMaster> There are also other ways as well. For example, you can g_system->lockScreen to get access to the screen as a Graphics::Surface temporarily. But I wouldn't recommend that because when you do that, ScummVM won't know what changes you make, which can slow down performance for scalers.
[19:01] <grogbot> <DreamMaster> I personally use Graphics::Screen mostly. It keeps a copy of physical screen, and you can blit surfaces to it, and then just call it's update() method. It takes care of tracking rectangles of what areas of the screen have been changed, and then calling copyRectToScreen for just them.
[19:03] <grogbot> <DreamMaster> In fact, for xu4 I used Graphics::Screen, and when a call required access to the video surface, just passed back a pointer to the Gracphics::Screen I'd created. That way the caller didn't need to know whether it was writing to the screen or another standard surface. I then just needed to call the screen's update() method regularly however many times a second
[19:07] <grogbot> <monyarm> i don't think i'll be able to do screen's update(), cause of how vileVN is strctured, it's got each UI element as a widget (custom class from vilevn), which handles all of the rects it's made of, and i'm currently trying to convert it, otherwise i'd have to redo all of the graphics code completely for nearly 20 engines.
[19:09] <grogbot> <DreamMaster> Whatever is most comfortable. Except for lockScreen. Forget I even mentioned that 😛
[19:10] <grogbot> <monyarm> On second though i think i'll get more compftorable with how scummvm works and work on my own engines first, before i try porting vileVN, cause as it stands i don't know how to do alot of things, and will probably be asking questions every other minute
[19:38] <-- Shine_ left irc: Read error: Connection reset by peer
[19:41] <Strangerke> girafe: concerning Maupiti Island, it's not supported yet despite it's sharing a lost. Blame my lack of interest :P
[19:42] <Strangerke> s/lost/lot
[20:02] <-- ajax16384 left irc: Quit: Leaving
[20:06] --> ajax16384 joined #scummvm.
[20:06] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services.
[20:14] --> spookypeanut joined #scummvm.
[20:14] <-- spookypeanut left irc: Changing host
[20:14] --> spookypeanut joined #scummvm.
[20:14] #scummvm: mode change '+o spookypeanut' by ChanServ!ChanServ@services.
[20:17] <grogbot> <monyarm> for some reason this line is making me segfault with OpenGL? screen->fillRect(Common::Rect(0, 0, g_system->getWidth(), g_system->getHeight()), 223330);
[20:20] <grogbot> <DreamMaster> How is screen set?
[20:21] <grogbot> <SupSuper> shouldn't you be using screen width and height instead?
[20:21] <grogbot> <monyarm> if (strcmp(getGameId(), "P3P") == 0) { //PSP initGraphics(480, 272, format); } else if (strcmp(getGameId(), "P4G") == 0) { //PSVita initGraphics(960, 554, format); } else { initGraphics(1920, 1080, format); }
[20:21] <grogbot> <DreamMaster> screen->w and screen->h are probably more effectively in this case
[20:22] <grogbot> <monyarm> Weird thing is it worked yesterday
[20:22] <grogbot> <DreamMaster> Not what I mean, how is the variable screen itself being set?
[20:23] <grogbot> <monyarm> Graphics::Surface *screen = g_system->lockScreen(); screen->fillRect(Common::Rect(0, 0, screen->w, screen->h), 0); Graphics::TransparentSurface *surfacetmx = _tmx.getSurface(); surfacetmx->blit(*screen, 0, 0, 0); Graphics::TransparentSurface *surfacedds = _dds.getSurface(); surfacedds->blit(*screen, 600, 0, 0); g_system->unlockScreen(); g_system->updateScreen();
[20:25] <grogbot> <DreamMaster> Seems okay to me, but I'm not familiar with TransparentSurface.
[20:25] <grogbot> <monyarm> it's a surface that supports transparency, i had to use it instead of Surface, in order to have the blending i wanted, i also tried ManagedSurface, but caused issue for me
[20:26] <grogbot> <DreamMaster> Which is fair enough; I just can't offer any insights into why it might crash.
[20:31] <grogbot> <monyarm> I think it might be because i rebased based on residualvm, gonna try and find if there's a residualvm discord, so i can ask how to change my code to work
[20:35] <Scummette> [scummvm] djsrv opened pull request #2253: DIRECTOR: LINGO: Remove quirk handling from <> op (master...list-comp2) https://git.io/JfRPX
[20:38] --> Stormkeeper joined #scummvm.
[20:49] --> ldevulder__ joined #scummvm.
[20:49] --> Shine_ joined #scummvm.
[20:53] <-- ldevulder_ left irc: Ping timeout: 256 seconds
[20:54] <girafe> strangerke : you didn't like maupiti island ? :-
[20:58] <girafe> anyway, without the speech synthesis, this game is not really the same
[21:04] <-- Shine_ left irc: Read error: Connection reset by peer
[21:26] <-- ajax16384 left irc: Quit: Leaving
[21:26] <-- spookypeanut left irc: Remote host closed the connection
[21:40] --> spookypeanut joined #scummvm.
[21:40] <-- spookypeanut left irc: Changing host
[21:40] --> spookypeanut joined #scummvm.
[21:40] #scummvm: mode change '+o spookypeanut' by ChanServ!ChanServ@services.
[22:17] --> BeefEats joined #scummvm.
[22:31] <-- criezy left irc: Quit: criezy
[22:33] <-- spookypeanut left irc: Ping timeout: 256 seconds
[22:54] <-- girafe left irc: Read error: Connection reset by peer
[22:59] Nick change: Flexman -> Guest88554
[22:59] <-- Guest88554 left irc: Killed (hitchcock.freenode.net (Nickname regained by services))
[22:59] --> Flexman joined #scummvm.
[23:03] --> DominusExult joined #scummvm.
[23:03] <-- DominusExult left irc: Changing host
[23:03] --> DominusExult joined #scummvm.
[23:06] <-- Dominus left irc: Ping timeout: 265 seconds
[23:06] Nick change: DominusExult -> Dominus
[23:24] --> borosky joined #scummvm.
[23:49] <-- yuv422 left irc: Remote host closed the connection
[23:50] --> yuv422 joined #scummvm.
[23:50] #scummvm: mode change '+o yuv422' by ChanServ!ChanServ@services.
[00:00] --- Sat May 16 2020