[00:21] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) joined #scummvm. [00:21] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services. [00:43] Just want to say Kudos for the ScummVM team, keep up the excellent work. [00:52] yuv422 (~yuv422@180-150-79-85.b4964f.syd.nbn.aussiebb.net) left irc: Remote host closed the connection [00:53] yuv422 (~yuv422@180-150-79-85.b4964f.syd.nbn.aussiebb.net) joined #scummvm. [00:53] #scummvm: mode change '+o yuv422' by ChanServ!ChanServ@services. [01:36] DominusExult (~dominus@port-92-194-1-63.dynamic.as20676.net) joined #scummvm. [01:36] DominusExult (~dominus@port-92-194-1-63.dynamic.as20676.net) left irc: Changing host [01:36] DominusExult (~dominus@unaffiliated/dominus) joined #scummvm. [01:40] Dominus (~dominus@unaffiliated/dominus) left irc: Ping timeout: 260 seconds [01:40] Nick change: DominusExult -> Dominus [01:44] [scummvm] dreammaster pushed 2 new commits to master: https://git.io/JfCYp [01:44] scummvm/master bb40556 dreammaster: GRAPHICS: Fix memory overrun blitting from paletted surfaces [01:44] scummvm/master 9dcb80f dreammaster: ULTIMA4: Fixing memory leaks [01:57] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCO6 [01:57] scummvm/master e94ab92 dreammaster: ULTIMA4: Fix context memory leak [02:15] @janisozaur see also https://github.com/scummvm/scummvm/pull/1776 for some history [02:15] We should support clang-format but it will take a per-subsystem approach [02:17] with a lot of fine tuning [02:17] [scummvm] dreammaster pushed 3 new commits to master: https://git.io/JfC3C [02:17] scummvm/master ea37ece dreammaster: ULTIMA4: Fix gcc warning [02:17] scummvm/master dda11da dreammaster: ULTIMA4: Further fixes for context memory leaks [02:17] scummvm/master 84a563a dreammaster: ULTIMA4: Minor music code cleanup [02:19] That's a very welcome initiative - I suggest taking a small subsystem like video and doing a PR for that [02:19] tweaking and moving on to the next piece [02:19] skipping engines for now [02:19] At some point we'll reach some code that no matter what will not format like we want and then we will need to figure out if we implement a rule, skip formatting it, etc. [02:19] but those cases will be easier to identify [02:22] SylvainTV (~Sylvain@lfbn-lil-1-811-58.w92-148.abo.wanadoo.fr) left irc: Read error: Connection reset by peer [03:02] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCGC [03:02] scummvm/master 1c4a964 dreammaster: ULTIMA4: Further context cleanup [03:19] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCZw [03:19] scummvm/master 2ced43f dreammaster: ULTIMA4: Further leak fixes [03:51] [scummvm] dreammaster pushed 2 new commits to master: https://git.io/JfCcM [03:56] scummvm/master 611da44 dreammaster: ULTIMA4: Fix shadow warning [03:56] scummvm/master cf8eeb8 dreammaster: ULTIMA4: Memory leak fixes [03:56] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCc9 [04:45] scummvm/master 7288900 dreammaster: ULTIMA4: Add destructor for TileAnimSet [04:45] [scummvm] digitall pushed 1 new commits to master: https://git.io/JfCCo [04:45] scummvm/master 8f6620b digitall: SDL2: Fix GCC Compiler Warning about Enum vs. Non-Enum Type in Conditional [04:46] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCCi [04:46] scummvm/master 9f75998 dreammaster: ULTIMA4: Leak fixes and class field renames [04:58] [scummvm] OMGPizzaGuy opened pull request #2233: ULTIMA8: Fix detection of FR_FRA & DE_DEU from Gold Edition CD installs (master...u8_detection_fixes) https://git.io/JfCCQ [05:07] [scummvm] janisozaur opened pull request #2234: JANITORIAL: clang-format video/ (master...clang-format-video) https://git.io/JfCWe [05:07] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCWv [05:07] scummvm/master 834ab12 dreammaster: ULTIMA4: Add destructor for tile anim pixel transforms [05:08] > That's a very welcome initiative - I suggest taking a small subsystem like video and doing a PR for that @Mataniko https://github.com/scummvm/scummvm/pull/2234 [05:16] [scummvm] digitall pushed 1 new commits to master: https://git.io/JfCWc [05:16] scummvm/master 348661c digitall: DRAGONS: Fix memset() Usage in LoadingScreenState Constructor [05:22] [scummvm] dreammaster pushed 2 new commits to master: https://git.io/JfCWW [05:22] scummvm/master 2166d58 dreammaster: ULTIMA4: Fix quit action [05:22] scummvm/master fec7b23 dreammaster: ULTIMA4: Cleaner can save currently check [05:25] BeefEats (~BeefEats@unaffiliated/beefeats) left irc: Quit: Bye [05:33] [scummvm] digitall pushed 1 new commits to master: https://git.io/JfCWE [05:33] scummvm/master 89e8b82 digitall: DRAGONS: Fix Set-But-Unused Variable GCC Compiler Warnings [05:36] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) left irc: [05:52] [scummvm] mduggan closed pull request #2233: ULTIMA8: Fix detection of FR_FRA & DE_DEU from Gold Edition CD installs (master...u8_detection_fixes) https://git.io/JfCCQ [05:52] [scummvm] mduggan pushed 1 new commits to master: https://git.io/JfCWh [05:52] scummvm/master b8e0527 OMGPizzaGuy: ULTIMA8: Fix detection of FR_FRA & DE_DEU from Gold Edition CD installs (#2233) [05:53] [scummvm] mduggan closed pull request #2227: ULTIMA8: Remove custom memory manager from engine (master...u8_remove_memory_manager) https://git.io/JfctG [05:53] [scummvm] mduggan pushed 1 new commits to master: https://git.io/JfClv [05:53] scummvm/master df3e9e3 OMGPizzaGuy: ULTIMA8: Remove custom memory manager from engine (#2227) [06:43] Begasus (~begasus@ptr-4qba4eb7g98gmf8abp0.18120a2.ip6.access.telenet.be) joined #scummvm. [07:11] Lightkey (~Darklock@p200300F69713551222CF30FFFE083718.dip0.t-ipconnect.de) left irc: Ping timeout: 260 seconds [07:23] Lightkey (~Darklock@p200300F69713554122CF30FFFE083718.dip0.t-ipconnect.de) joined #scummvm. [07:34] [scummvm] sev- closed pull request #2229: ALL: clang-format (master...clang-format) https://git.io/JfCe9 [07:38] [scummvm] sev- closed pull request #2232: GRAPHICS: MACGUI: Allow specifying a custom cursor using Graphics::Cursor (master...mac-cursor) https://git.io/JfCIL [07:38] [scummvm] sev- pushed 1 new commits to master: https://git.io/JfC0B [08:56] If anyone sees a Roland MT-32 for a reasonable price, please let me know [09:18] ajax16384 (~User@109.60.130.33) joined #scummvm. [09:18] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services. [10:41] timofonic (~timofonic@unaffiliated/timofonic) left irc: Ping timeout: 256 seconds [10:42] timofonic (~timofonic@unaffiliated/timofonic) joined #scummvm. [10:46] ced117 (~ced117@opensuse/member/ced117) left irc: Ping timeout: 264 seconds [10:48] ced117 (~ced117@opensuse/member/ced117) joined #scummvm. [10:52] scummvm/master ef7edf9 ccawley2011: GRAPHICS: MACGUI: Allow specifying a custom cursor using Graphics::Cursor [10:52] [scummvm] mduggan pushed 1 new commits to master: https://git.io/JfCoh [10:57] Shine (~Shine@x4d088063.dyn.telefonica.de) joined #scummvm. [11:03] Ditto lol [11:12] scummvm/master 44513f4 mduggan: ULTIMA8: Add sound effect and support regret in crusader quit gump [11:13] [scummvm] ccawley2011 opened pull request #2235: GRAPHICS: Improve mask and palette handling in ManagedSurface (master...managed_surface) https://git.io/JfCKo [11:17] Guest2351 (~tompsson@h-69-131.A785.priv.bahnhof.se) joined #scummvm. [11:18] Tomaz^ (~tompsson@h-69-131.A785.priv.bahnhof.se) left irc: Ping timeout: 240 seconds [11:23] timofonic (~timofonic@unaffiliated/timofonic) left irc: Ping timeout: 256 seconds [11:23] timofonic (~timofonic@unaffiliated/timofonic) joined #scummvm. [11:28] I need to do more with these ;) (I hate that all look different, at least the cm32ln was supposed to match the laptop or whatever that it was supposed to be beneath [11:28] https://cdn.discordapp.com/attachments/581224061091446795/708641995895210024/image0.jpg [11:31] SylvainTV (~Sylvain@lfbn-lil-1-811-58.w92-148.abo.wanadoo.fr) joined #scummvm. [11:31] #scummvm: mode change '+o SylvainTV' by ChanServ!ChanServ@services. [11:33] timofonic (~timofonic@unaffiliated/timofonic) left irc: Ping timeout: 272 seconds [11:34] I've got an SD-35 and an RA-50. [11:35] I dislike that these are not stackable [11:37] Because having these in my desktop cabinet (wrong words, no idea what that is in english) is really convenient 😉 [11:40] That looks familiar 😉 [11:40] Except I don't have a CM32-LN, and my SC-55 is a mkII [11:51] Shine (~Shine@x4d088063.dyn.telefonica.de) left irc: Read error: Connection reset by peer [12:13] Shine (~Shine@x4d088063.dyn.telefonica.de) joined #scummvm. [12:44] Yeah before there became a rank standard, it was pretty much any size [12:49] SylvainTV (~Sylvain@lfbn-lil-1-811-58.w92-148.abo.wanadoo.fr) left irc: Quit: User pushed the X - because it's Xtra, baby [12:52] SylvainTV (~Sylvain@lfbn-lil-1-811-58.w92-148.abo.wanadoo.fr) joined #scummvm. [12:52] #scummvm: mode change '+o SylvainTV' by ChanServ!ChanServ@services. [13:00] [scummvm] mduggan pushed 1 new commits to master: https://git.io/JfC1z [13:03] @mduggan I'm wondering why ScummVM doesn not recognize the crusader games when I try to add them. Do I do something wrong or is that not set up yet? [13:04] the detection entries are commented out because the game is a really long way from working [13:04] ah, ok, so it's not me 🙂 [13:04] Love that you are working on them [13:04] I've made a little bit of progress on a branch I have, but it's still a really long way from anything resembling the game 🙂 [13:05] btw, in answer to your thing about the U8 jump key, yes I meant to make it support running jump too, I just didn't get around to that.. [13:05] thanks [13:06] I also want to add keyboard "tank controls" (turn-left/turn-right/forward/back) for the avatar since I need that for crusader anyway [13:06] YES! 🙂 [13:08] I wonder if you were so happily coding on this if it still were Pentagram instead of ScummvM 🙂 [13:08] (but I guess the instantly being ported to SDL2 already helped a lot :)) [13:18] Yeah, sdl2 makes it easier for me .. the music and movie support for crusader were also way easier to add in scummvm since the infrastructure was already in place [13:21] I'm still getting asked about the move to ScummVM and I always have to say... I'm happy how that turned out :) [13:26] Strangerke (~Strangerk@94.104.103.142) left irc: Ping timeout: 264 seconds [13:38] Maybe i'm missing something, but when I do readUint16LE it only reads 2 bytes, but readUint32LE reads 6 bytes. That doesn't seem right. Maybe it's cause of how I cast them to char pointers? static_cast(static_cast(&x)) where x is the variable where I storedd the read value [13:39] that does seem wrong. it really shouldn't read 6 bytes for a 4 byte value [13:39] Typo, i meant to say 8 [13:39] Whats confusing me is that I cant get it to read 4 bytes, even though it did that with the exact same code just a few minutes ago [13:42] if i make my variable a ulong it works fine, and i just checked and none of the ScummVM typedefs seem to be a ulong [13:43] uint64 is a long long, but there doesn't seem to be a regular long [13:48] But ya, the issue seems to be from the typedefsl not from the read functions. uin32 holds 8 bytes, instead of 4, so when i try to use it as a variable for a read function, the other 4 bytes are just random memory [13:49] that's literally impossible. is what i would say if scummvm wasn't stuck in the 90's. [13:51] any ideas, cause this is making writing a reader for pmsf files alot more difficult than it already is (and all i have is ffmpeg source code and some partial header information) [13:52] criezy (~criezy@host31-51-71-195.range31-51.btcentralplus.com) joined #scummvm. [13:52] #scummvm: mode change '+o criezy' by ChanServ!ChanServ@services. [13:53] Maybe making my project a fork of ScummVM wasn't such a smart idea [14:07] speachy (~speachy@209.2.65.77) left irc: Read error: Connection reset by peer [14:08] speachy (~speachy@209.2.65.77) joined #scummvm. [14:12] @monyarm As its name suggest uint32 should be 32 bits, i.e. 4 bytes. It it is 8 bytes for you then there is something badly wrong, but I have no idea what this could be. [14:12] Ya, it's 8 bytes for me [14:12] Also long int has the bad habit of being either 4 bytes or 8 bytes on common platforms. It is for example 8 bytes on 64 bits Linux and macOS, but it is only 4 bytes on 64 bits Windows (and on 32 bits Linux and macOS). For me on macOS compiling in 64 bits uint64 is actually defined as long int in config.h. But when compiling in 32 bits or on Windows it would be defined as long long int. [14:15] intellisense and looking at the header files is telling me that uint32 is an unsigned int, but it doesn't behave like it. All i've changed for my fork is, remove the engines, and the devtools that are engine specific, add some functions to common that turn a byte* or char* to their hexadecimal representation, and start work on my first engine, I haven't touched any of the typedefs. [14:15] if only there was a standard header with typedefs automatically provided by the compiler [14:16] Oh and also added some extra platforms to platforms.h/cpp [14:16] but alas, here in the 90's there is no such header. what a shame. [14:18] this is my fork if someone could be so kind as to take a look and see if they can figure it out? https://github.com/monyarm/NovelVM the only header i've included that isn't part of the project is vector, as i needed std::vector for some things [14:18] definitely can't use that might be code written by someone who isn't us! it might contain cooties! [14:19] I doubt that vector of all things is screwing with the types. [14:20] so do I. but project policy still says it's not allowed. [14:21] Your toBytes() and toChars() look wrong to me. [14:21] You are taking the address of something that is already a pointer. [14:22] So the result converted to a byte* is the address of the pointer and not what it points to. [14:23] I took them from stackoverflow, I needed them to turn anything (say an int or a long) and turn it into a bunch of bytes [14:23] If you were calling the macro with a int or a long it would be fine, but you are calling it with a int* or a long*. [14:25] Am I? It looks to me like I'm giving it a ulong* and static casting it into a char*? [14:28] In BytesToEx you are calling toBytes with a T*, so a pointer to something which I assume to be a int or long, and you take its address using the & operator in the macro. [14:28] Oh in BytesToHex [14:28] I'll take a look [14:30] OK I committed a fix, and while that will fix my debugging, there's still the issue with the uint32 size [14:32] What makes you think that uint32 is 8 bytes for you? Which part of the code exhibit the wrong behaviour? [14:32] And also we have Common::Array as a replacement for std::vector. [14:33] In smt.cpp when I debug magic. If _magic is a uint32, the debug spits out 8 characters, if its a ulong it spits out 4 [14:34] Also I didn't know about Common::Array, I'll switch to that. [14:37] You BytesToHex function still seems wrong to me. [14:37] The one that takes a pointer creates a local Common::String and returns a pointer to its content. [14:37] But since it is destroyed when you leave the function, you are left with a pointer to freed memory. [14:38] Ya bytestohex is probably wrong, and I'll fix it later, but I need to fix my uint32 issue first, [14:39] timofonic (~timofonic@unaffiliated/timofonic) joined #scummvm. [14:40] @monyarm Aren't Shin Megami Tensei (Persona) games done in 3D? [14:41] In the code you pushed _magic is a ulong though, and not a uint32. [14:44] I know. But if you change it to uint32, you'll see the issue. (may need to create a dummy file if you don't own the game) timofonic: they are, and I might have to switch to residualvm 's code base to have 3d support. But for now I'm just gonna work on the Visual Novel part of the games. [14:47] Also you cannot trust your debug as it is wrong. [14:47] It expect a null terminated string, and what you give to it isn't. [14:47] So it may result in printing garbages characters beyond your 4 bytes until it gets by chance a 0. [14:49] Ah, I see [14:49] Also it may print less than 4 bytes if one of them happen to be a 0. [14:50] Well shit, what can I do? Cause I can't use printf in scummvm. [14:51] there is a replacement. [14:51] can't recall what it's called, but it ends up just using the underlying engine in the stdlib [14:51] Debug and printf work more or less in the same way. [14:52] Ah, well I'm gonna have to think of something. [14:58] Something like the following should work for what you seems to want to do: c uint32 _magic = f.readUint32LE(); char* magic = toChars(_magic); debug("%c%c%c%c", magic[0], magic[1], magic[2], magic[3]); [14:58] Thank you [14:59] Although what you will get depends on the endianess of the platform you are on. But for a debug message this might be fine. [15:01] It's fine, I'm simply trying to debug to see if my pmsf reader is working right. [15:10] ny00123 (~ny00123@5.102.217.144) joined #scummvm. [15:14] Zaarin (~dfh@188.93.190.29) joined #scummvm. [15:19] ajax16384 (~User@109.60.130.33) left irc: Quit: Leaving [15:32] or use Common::hexdump() [15:32] which is much easier and robust [15:33] or, if you want to print out the FourCC, as you apparently want, then there is tag2str() conventional method [15:47] _sev (~sev@scummvm/undead/sev) left irc: Quit: Leaving [15:52] Knowing about hexdump and tag2str would have made this so much simpler. [15:56] Hi, I'm sorry if this is the wrong place to ask this, but does ScummVM support either custom width/heights or a 5x mode or similar? I'd love to run the 320x200 games at 1600x1200 if possible, to keep crisp edges on pixels but also maintain the corrected aspect ratio, but I cant find if that sort of thing is supported. Thanks, and sorry to bother you all 🙂 [16:00] Hmm. That would be a nice addition [16:11] @sev thank you, hexdump is much better. [16:24] @ja2ke You can do it but it is not straightforward. In Window mode you can manually resize the window. Using the pixel perfect stretch mode will also help as you do not need to get the exact size you want for the window. If you get a bit bigger it will just add black borders, until your window reaches the next integer multiplier (x6). [16:27] Also if you use aspect ratio correction, you will want to use OpenGL graphics mode so that the aspect ratio correction and the stretching are done in the same pass. With other modes they are done in two separate passes and may result in artefacts. [16:27] Nice, thanks! Theoretically a 320x200 game at 5x scale with aspect ratio correction should give pixels that are exactly 5 pixels wide by 6 pixels high. [16:27] So I'll see if I can wiggle the window around and make it happen 🙂 [16:36] timofonic (~timofonic@unaffiliated/timofonic) left irc: Remote host closed the connection [16:39] timofonic (~timofonic@unaffiliated/timofonic) joined #scummvm. [16:47] BeefEats (~BeefEats@unaffiliated/beefeats) joined #scummvm. [16:48] omgpizzaguy (~watt@136.37.191.159) joined #scummvm. [16:50] Going with my github name for clarity since it seems I have the inch to code again [16:51] Looking through ultima8 source for my next deal and I'm eyeing the p_dynamic_cast stuff [16:53] IIRC it was put in for systems that lack or have buggy RTTI but it seems that might be a concern of the distant past. [16:54] I'm seeing normal use of dynamic_cast through the rest of the code, so would removing p_dynamic_cast be a good project [16:54] ? [16:58] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) joined #scummvm. [16:58] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services. [16:58] So, one more question, i've found specs for the format i'm working on, and the problem is that it has some 48 bit values, and well there isn't such a thing as a uint48 [17:04] scummvm/master 09bf38c mduggan: ULTIMA: Add missing initializers for coverity [17:04] [scummvm] digitall pushed 1 new commits to master: https://git.io/JfCF5 [17:04] scummvm/master 05bc8c2 digitall: GRAPHICS: MACGUI: Fix Signed vs. Unsigned GCC Compiler Warnings [17:10] timofonic (~timofonic@unaffiliated/timofonic) left irc: Read error: Connection reset by peer [17:16] ajax16384 (~User@109.60.130.33) joined #scummvm. [17:16] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services. [17:20] omgpizzaguy: that would be a question for @DreamMaster [17:36] Hi guys, I had a quick question. Currently, whenever I build scummvm - it runs fine, but in my output window: 'scummvm.exe' (Win32): Loaded 'G:\dev\GSoC\ScummVM_Dev\scummvm\dists\msvc\Debug32\scummvm.exe'. Symbols loaded. 'scummvm.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file. 'scummvm.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file. 'scummvm.exe' [17:36] (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file. 'scummvm.exe' (Win32): Loaded 'G:\dev\GSoC\ScummVM_Dev\scummvm\dists\msvc\Debug32\fribidi.dll'. Cannot find or open the PDB file. 'scummvm.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140.dll'. Cannot find or open the PDB file. And a few 30-40 lines more of these are there. Is something wrong? Application seems to be working correctly without any issues [17:36] It could likely be removed, yes. And as you say, plain dynamic_cast is being used elsewhere throughout the code [17:37] @aryanrawlani28 that just means you won't have debug info for those libraries [17:38] set your debugger to bother loading the symbols if you care. be warned, they need to be redownloaded every windows update. and it can take five or more minutes on my machine. [17:39] Though I am concerned over the member function isOfType(const char *). If it's needed to be able to specify types by string anywhere, that could prove difficult for a removal. Titanic uses a similar mechanism for streaming to/from savegames [17:41] [scummvm] dreammaster pushed 1 new commits to master: https://git.io/JfCNT [17:41] scummvm/master 8b1535c dreammaster: ULTIMA4: Allow for loading saves in cities [17:41] @dreammaster thanks! [17:45] IsOfType does pop up a few times in the code so I'll look into it [17:50] Okay, thanks! [17:53] CTxCB (~kvirc@87.75.186.124) joined #scummvm. [17:54] I wonder if somebody could help me? I'm looking to extract the MIDI Music from a room in Monkey Island II. [17:55] I've tried to use ScummEX, and I've found some ADL Files, but I don't know how to convert them to MIDI files. [17:56] I wanted to extract the version of Largo's Theme used in his room at the Inn, with the intention of using it to extend his main theme. [17:56] There was a post in the forums recently about this thing iirc [17:57] https://quickandeasysoftware.net/software/scumm-revisited Scummrev 2 can extract the music as MIDI files [17:57] You'll get them as format 2 files because that's how they're stored so you need to convert them to format 1 before you can open them in a DAW [17:58] Is it the music playing in Largo's room at the inn? [17:58] Here's the post I was talking about, from @ZvikaZ : https://forums.scummvm.org/viewtopic.php?p=88503#p88503 [18:00] I have a file, where I have to read a struct untill the end of the file, how can i figure out if i've reached the end of the file? Would f.pos() == f.size() work? [18:01] Begasus (~begasus@ptr-4qba4eb7g98gmf8abp0.18120a2.ip6.access.telenet.be) left irc: Quit: Ex-Chat [18:08] Zaarin: Yeah. It's a different version of his Theme Tune. [18:08] I've got the Version 2 MIDI files, is there a tool you suggest for converting it to Version 1? [18:12] maybe I got something..one sec [18:12] @monyarm: if (f.eos()) [18:13] Or read while f.read() > 0 [18:18] If you need a method seperate from reads to check end of file, I wouldn't recommend f.pos() >= f.size().. it's inefficient, because the size() call does a file seek to get the size, and then back again. In the past, I've implemented a method like so: https://github.com/scummvm/scummvm/blob/8b1535cbdd9d76e251178e7bb93a061bc407f4f3/engines/ultima/shared/core/file.cpp#L89 [18:19] You could do something similar using a Common::File.. get the filesize once, and in your loop check if pos() is >= it [18:34] [scummvm] digitall pushed 1 new commits to master: https://git.io/JfCxU [18:34] scummvm/master 3111596 digitall: PRINCE: Fix Signed vs. Unsigned GCC Compiler Warning [18:36] [scummvm] digitall pushed 1 new commits to master: https://git.io/JfCxI [18:36] scummvm/master ec153bb digitall: DRAGONS: Fix Signed Overflow GCC Compiler Warnings [18:39] _sev (~sev@d158167.upc-d.chello.nl) joined #scummvm. [18:39] _sev (~sev@d158167.upc-d.chello.nl) left irc: Changing host [18:39] _sev (~sev@scummvm/undead/sev) joined #scummvm. [18:39] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services. [18:40] @DreamMaster Why not use Common::File::eos()? [18:44] It has the disadvantage of only returning true after having attempted to read beyond the end of the file. So in cases where I have an iteration loop to, say, synchronise in items one at a time, using Common::File::eos() results in an invalid entry at the end of the list [18:46] Having a proper check for being at the end of the file is a lot cleaner than trying to have the individual elemement reading code do explicit eos() checks after reading the first element, and somehow passing out to the caller that the element being read was invalid, and shouldn't be added to the list [18:46] CTxCB (~kvirc@87.75.186.124) left irc: Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/ [18:54] personally I prefer to not hit EOF at all. i read as much as i need to an no more. [18:59] yeah it can be a bit annoying to read unbounded data when you normally want something like "while (more_data) read_entry()" and instead have to guard every read [18:59] @DreamMaster Right. Although you end up having a function named similarly to standard C and C++ functions but having a slightly different behaviour. This may be convenient, but could be confusing. I have seen some code naming such functions atEnd() or something similar instead. [19:01] i normally do something like a peek that does "if (read()) seek(-1) else return false" [19:01] i've never been a fan of unreading data. [19:01] @sev see notes on the clang-format PR [19:02] How are you liking vscode [19:06] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) left irc: [19:10] _sev (~sev@scummvm/undead/sev) left irc: Quit: This computer has gone to sleep [19:13] And one more quesion (sorry for asking things so often) I'm reading my data into a struct with f.read(&dat, sizeof(TMXData)) But I want to turn some of the uint32s into Enums, and am wondering if it'll work. [19:15] [scummvm] BLooperZ opened pull request #2236: PINK: support hebrew version (master...pink_bidi_macgui_flipped) https://git.io/JfCpR [19:16] It sort of works [19:17] it's not recommended to read a whole struct into memory as there's no guarantee the compiler won't change the layout (without a lot of compiler-specific hacks) [19:17] If i use my toBytes function, i can hexdump it, but if i just do &dat.formatsettings.pixelformat, then it doesn't work and gives this error argument of type "PS2PixelFormat *" is incompatible with parameter of type "const byte *" [19:17] It isn't recommended? Damn it. [19:18] Cause it's much easier to just do one f.read(), rather than a dozen f.readbyte() and f.readUint32BE() [19:19] yeah but it's a lot less portable [19:19] and you'd still have to correct endians and etc. [19:19] _sev (~sev@d158167.upc-d.chello.nl) joined #scummvm. [19:19] _sev (~sev@d158167.upc-d.chello.nl) left irc: Changing host [19:19] _sev (~sev@scummvm/undead/sev) joined #scummvm. [19:19] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services. [19:20] see https://wiki.scummvm.org/index.php?title=Coding_Conventions [19:20] Well that's just great, i'm gonna have to redo all of my file reading code, that's just dandy [19:21] @Mataniko still have small troubles here and there, but haven't found a killer feature for myself yet [19:25] Zaarin (dfh@188.93.190.29) left #scummvm. [19:27] travis-ci (~travis-ci@218.60.73.34.bc.googleusercontent.com) joined #scummvm. [19:27] scummvm/scummvm#13199 (master - 3111596 : D G Turner): The build has errored. [19:27] Change view : https://github.com/scummvm/scummvm/compare/8b1535cbdd9d...31115960e6d0 [19:27] Build details : https://travis-ci.org/scummvm/scummvm/builds/685121784 [19:27] travis-ci (travis-ci@218.60.73.34.bc.googleusercontent.com) left #scummvm. [19:28] _sev (~sev@scummvm/undead/sev) left irc: Quit: This computer has gone to sleep [19:34] _sev (~sev@d158167.upc-d.chello.nl) joined #scummvm. [19:34] _sev (~sev@d158167.upc-d.chello.nl) left irc: Changing host [19:34] _sev (~sev@scummvm/undead/sev) joined #scummvm. [19:34] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services. [19:36] Strangerke (~Strangerk@94.104.103.142) joined #scummvm. [19:36] #scummvm: mode change '+o Strangerke' by ChanServ!ChanServ@services. [19:36] hi guys [19:38] _sev (~sev@scummvm/undead/sev) left irc: Client Quit [19:43] Hi Strangerke [19:54] _sev (~sev@scummvm/undead/sev) joined #scummvm. [19:54] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services. [19:57] [scummvm] sev- pushed 2 new commits to master: https://git.io/JfCj0 [20:09] dreammaster (~dreammast@c-73-241-66-252.hsd1.ca.comcast.net) joined #scummvm. [20:09] #scummvm: mode change '+o dreammaster' by ChanServ!ChanServ@services. [20:14] scummvm/master 77c5108 sev-: DIRECTOR: Improved makePathRelative [20:14] scummvm/master 6aacdb1 sev-: GUI: Normalize width/height parameters [20:14] [scummvm] ccawley2011 opened pull request #2237: COMMON: Allow ignoring CR line breaks in SeekableReadStream::readLine() (master...readline-cr) https://git.io/JfWeo [20:21] Question, if i were to implement an archive file for a format that is used by multiple unrelated engines (a common format, or some sort of middleware). What would be the best way to do so? Make an archive folder and put them there, or just write it for one engine, and when another engine needs it, include it from the first engine? [20:23] Definitely including files cross-engines is a no-no, so something that'll get used by multiple engines is better placed in common/, just like we have common/zlib.h [20:26] We've also got Installshield & Unarj in common/ as well [20:28] might need a zip unpacker if we do the mobile freeware additional downloads [20:29] pretty sure we have zip [20:29] Yep. common/unzip.h [20:29] maybe we should have an archive folder 😛 [20:29] In fact, my ultima.dat is just a renamed zip file. Makes it easier to package up the individual files the different open source Ultima games needed [20:30] That may not be a bad idea, particularly if yet another archive format is added [20:35] ajax16384 (~User@109.60.130.33) left irc: Read error: Connection reset by peer [20:37] Ya, have an archive folder, with the implementations for the archive (the one extending Archive), from each of the engines, and then those engines rather than implementing the formats themselves, would just use the ones in the archive folder [20:39] there's very few common formats. gamedevs like their trade secrets [20:39] Well, only the archives can be shared across game engines. For example, the archive class in the ultima engine has special logic for getting files from a specific subfolder in a zip based on which game is playing, so it'd be pointless to be in common/ [20:39] True, but there is middleware [20:39] Trade secrets or their way to code [20:39] And i've encountered some games where they use a common format, and just put an extra header at the front [20:40] While it's not an adventure game, Persona 3/4 use an iso with an extra header (i think it was 32 bytes) stuck to the front of it, remove the header, and you've got a regular iso file [20:40] And that's middleware [20:41] CRI's CVM format [20:41] (surprise, you just found the lead of the Spanish fantranslation project for P3FES) [20:41] yeah there's lots of games with, erm, "butchered" common formats. often it's easier to make a new loader than retrofitting it to the standard [20:41] omgpizzaguy (~watt@136.37.191.159) left irc: Read error: Connection reset by peer [20:41] Just to point it out, Persona 3/4's textures are the standard PS2 texture format with a swapped header [20:42] omgpizzaguy (~watt@136.37.191.159) joined #scummvm. [20:42] Speaking of sharing. I recently implemented a simple music player based, randomly, on GNap's music player. It had a comment saying it was taken from Draci, which took it from MADE, which took it from SAGA. A nice little mini-project might be to see if a more concrete implementation of MidPlayer could be shared in common by the various engines [20:42] headerless formats are a pain because most stream implementations expect them and don't make it easy to ignore [20:44] Ya, CVM, that's what the modified ISO was [20:48] Huh interesting, the fork i'm working on is one for playing visual novel games, and while looking through a few such games, i found one that uses MIDI for the audio. [20:49] Not surprising It's fairly widespread [20:49] BeefEats (~BeefEats@unaffiliated/beefeats) left irc: Quit: Bye [20:50] Ya, but it's the first i've seen it in a visual novel [20:50] Unfortunately, I'm still not able to support the .it files xu4 used within ScummVM :P [20:50] they usually just use the format of their platform (atrac3+ on psp), or something common like mp3 or ogg or wav [20:51] Ah. Fair enough. Haven't seen many visual novel games. *cough* Plumbers *cough* :) [20:52] I'm not sure Plumbers counts [20:52] it's not like popcap, they use mo3 files [20:52] Heh. Yeh :) [20:52] i've poked at the ace attorney games. they tend to use nintendo stock middleware. [20:53] then again, capcom loves to make custom archive file formats. [20:54] Oh the ace attorney games, i completely forgot about them, i'll add them to the list [20:54] Objection! [20:55] Wait what list is this? Only sort of following this conversation. [20:55] List of engines with custom archive formats? [20:56] No, list of visual novels i should work on adding to my project, currently i've done some work on P3P (CVM, PSMF and TMX files), but i'm getting frustrated by the formats, so i decited to grab a few random visual novels and take a look at their files [20:57] good luck with ace attorney. those games have like twenty times more control codes than a typical visual novel. and they tend to involve a lot of special graphics. [20:58] both in control codes per script and types of control codes. [20:59] Ya, they'll probably be just as difficult as the persona games, i'm currently working on figuring out another visual novel, but due to the kind of game it is, just mentioning it would probably be grounds to get me kicked out of here [20:59] Is your goal to merge this into scummvm? [21:00] Not really, ScummVM is focused on adventure games not visual novels, so i don't think it'd be accepted [21:00] RPGs now too. But yes, visual novels are different. [21:01] Oh, scummvm is also doing RPGs? [21:04] Yep. Both engross the player in completing what is hopefully an engrossing story :) [21:04] Huh, well so do visual novels, when i have some real progress on my project, should i attempt to get it merged in? [21:08] Perhaps not. I vaguely recall there's been previous discussions of visual novels, but I really seriously do have an extremely poor memory, so I can't remember what got discussed in it [21:09] my only concern is if you're specifically targeting modern VNs with still active IP holders which might not take a liking to it 😛 [21:11] To be honest most of the VNs i'm targeting are the nsfw ones you can get for a few hundred yen each, that are usually based on someone elses IP. Mostly cause they're much simpler to reverse than actual proper VNs like Clanaad or Stein;s Gate [21:12] @monyarm unfrotunately, nsfw novels could not be accepted to scummvm. You have to fork the project [21:12] moreover, there are at least 3 existing projects supporting VNs [21:13] as opposed to the other adult games? [21:13] @Henke37 which adult games? [21:13] Ya that's what i'm currently doing anyways, but if VNs start being accepted, i'll submit the SFW novels. and keep my fork as a place for the nsfw ones [21:13] phantasmagoria for one thing [21:13] @Henke37 VN games aren't "adult", they're adult [21:13] so, you may also tell that the primary plot of phantasmagoria is pr0n? [21:14] Leisure Suit Larry is "adult" [21:14] Last message repeated 1 time(s). [21:14] @sev which 3 projects? I've found a few (like a clannad reimplementation and a steins gate reimplementation). But could you link the ones you're referring to? [21:15] something called VileVM IIRC [21:15] @Strangerke knows more [21:15] but yeah there's probably a universe of VNs from pc88 to ps1 that might be better in their own project. there's very little "engine" to most of them [21:15] is there a particular reason for the nsfw ban? i feel like i've asked this before... [21:16] @Henke37 yes, not compatible with me [21:16] that seems like a you problem and not a project problem [21:17] @Henke37 at this very moment, You are the problem [21:17] want to be on my place? [21:18] you seem to take things too seriously. not everything is a personal attack. [21:19] I have to say I'm uncomfortable too with the idea of games "bsaed on other peoples IP". That's an extremely risky thing to be openly supporting [21:19] omgpizzaguy (~watt@136.37.191.159) left irc: Ping timeout: 256 seconds [21:19] Those games are openly being sold on sites like dlsite (which also has sfw stuff, so i think i'm safe mentioning it) If the IP holders had issues they'd go after dlsite [21:20] You know what the worst kind of game is? The kind that doesn't have archives or resources, just a 500MB executable [21:21] oh, we know that kind very well. hardcoded engines [21:21] Action: dreammaster shudders. Is having TsAGE and MADS flashbacks [21:22] Ya, out of the two games i checked just now, one has a very simple archive format (size, name, 0x2020, file offset) and the other is hardcoded [21:22] Sho_ (~sho@kde/hein) left irc: Quit: Konversation terminated! [21:24] Sho_ (~sho@kde/hein) joined #scummvm. [21:24] I hate the archive types that even with an index, use arbitrary Ids. I get the feeling that the original source probably used proper names put through a hashing algorithm, but it's so nasty to pass numeric values everytime. Or try to make a massive enum of valid values being passed. :P [21:27] dreammaster : I still hopt we'll work on TsAGE again in the future... d [21:28] One of these days, sure. There's also the other MADS games to finish. I'd also love to see Orion Burger finished after all these years. That looked like it could be an interesting game, but I've made it a policy never to play adventures that might possibly be eventually supported in ScummVM until they are :) [21:30] oh, yeah, wasn't it Phantom which was *almost* done? [21:31] Mostly, yes. There was some conversation system stuff that would be needed to be figured out via disassembly of the original.. my progress kinda stalled out on it, and then I got distracted by other games [21:32] yep, I think only a part of the dialog system was missing, as far as we managed to test it [21:34] I'd originally been hopeful of reaching the milestone of having Dragonsphere support, because it used to be free on GOG. But I happened to notice by chance on one of the previous sales that it's no longer free :( [21:36] you didn't "buy" it when it as free? [21:36] Hmm, i'm having some issues with a format i'm working on, the header is uint16 - ???? char[4] name uint16 - buffer? (0x2020) char[4] extension uint16 - location (flipped hex (A201 become 01A2) But there isn't a length, i thought it might be the first uint16, but it's two short. It's a file full of BGM, would anyone be willing to help take a look at the files, to maybe see if i missed something? [21:36] omgpizzaguy (~watt@136.37.191.159) joined #scummvm. [21:37] Sure. But it's always been good for the gamers of ScummVM the more free games there are that ScumMVM supports. Even if the games in question aren't hosted on our website. So it's always a bummer when one is "lost". THough at least users can still purchase it from GOG. That's a heck of a lot better than it simply disappearing, like some other games have [21:38] @monyarm it could be chained [21:38] just like ZIP archives. e.g. next location is current location + size [21:39] flipped hex is called Little Endian https://en.wikipedia.org/wiki/Endianness [21:39] That could make sense, and maybe the location is actually the size, and just happens to correspond to the location of the 1st item? Would you mind if i sent you the file, so you could also take a quick look? [21:42] omgpizzaguy (~watt@136.37.191.159) left irc: Ping timeout: 264 seconds [21:43] well, I am not very good at staring at files. I would rather go directly with IDA [21:45] @monyarm if the games are still being sold, surely they're still playable? [21:45] @monyarm your char[4] and uint16 buffer looks like just one single field called "name", just padded to fixed lenght [21:45] Not all of them, and also they're windows only, and some of them are made for older versions of windows [21:46] Ya i figured that out, by looking at another file and seeing a larger filename [21:47] omgpizzaguy (~watt@136.37.191.159) joined #scummvm. [21:47] Westwood used a hash of the file name as their index in all their games, so annoying. [21:47] A crappy hash too. [21:48] not sure if that's better or worse than just not having any names at all. [21:48] [scummvm] dreammaster pushed 4 new commits to master: https://git.io/JfWUX [21:48] scummvm/master 2283cc0 dreammaster: ULTIMA4: Fix yet again keypresses showing during initiate game [21:48] scummvm/master 469ab57 dreammaster: ULTIMA4: Fix crash exiting game during initiate game [21:48] scummvm/master 045b2e1 dreammaster: ULTIMA4: Cleanup & clarification of savegame position fields [21:48] But ya, would anyone be willing to take a look and the file and see if they notice anything i'm missing, cause i've reverse engineered file formats before (some Persona 3 file formats, back when the modding scene was just a skype chat), but i can be pretty oblivious [21:49] what about duplicate names :v [21:52] Dune uses enums internally and maps to a string before opening the file, so you can find the name but always have to look it up. [22:18] Shine (~Shine@x4d088063.dyn.telefonica.de) left irc: Read error: Connection reset by peer [22:23] omgpizzaguy (~watt@136.37.191.159) left irc: Ping timeout: 260 seconds [22:23] omgpizzaguy (~watt@136.37.191.159) joined #scummvm. [22:41] ny00123 (~ny00123@5.102.217.144) left irc: Quit: Leaving [22:43] Huh, some of the game use NScripter, i wouldn't have expected a Doujin game to buy a license for a real game engine [22:51] ldevulder_ (~ldevulder@176.167.115.43) joined #scummvm. [22:52] ldevulder (~ldevulder@89-86-17-97.abo.bbox.fr) left irc: Ping timeout: 240 seconds [23:13] [scummvm] sev- pushed 3 new commits to master: https://git.io/JfWIo [23:30] criezy (~criezy@host31-51-71-195.range31-51.btcentralplus.com) left irc: Quit: criezy [23:40] So many odd uses of that IsOfType method. Might need to change some of them out first. [23:44] scummvm/master 9308a1c sev-: DIRECTOR: LINGO: Added support for cast references as 'the' entities [23:44] scummvm/master 8c69528 sev-: DIRECTOR: LINGO: Added test for 'the' entities as cast number [23:44] scummvm/master 4b4b73d sev-: DIRECTOR: LINGO: Added sanity check to b_updateStage() [23:44] [scummvm] Mataniko pushed 1 new commits to master: https://git.io/JfWLR [23:44] scummvm/master dbf404b Mataniko: BACKENDS: Allow the screensaver to turn on when ScummVM is running [23:51] _sev (~sev@scummvm/undead/sev) left irc: Quit: This computer has gone to sleep [23:53] _sev (~sev@scummvm/undead/sev) joined #scummvm. [23:53] #scummvm: mode change '+o _sev' by ChanServ!ChanServ@services. [00:00] --- Sun May 10 2020