[Bug 59560] New: Malkari (1999): InstallShield warns IR50_32.dll failed to self register; no in-game video playback
http://bugs.winehq.org/show_bug.cgi?id=59560 Bug ID: 59560 Summary: Malkari (1999): InstallShield warns IR50_32.dll failed to self register; no in-game video playback Product: Wine Version: 11.5 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@list.winehq.org Reporter: tmarplatt@gmail.com Distribution: --- Created attachment 80614 --> http://bugs.winehq.org/attachment.cgi?id=80614 Screenshot of the InstallShield warning prompt During a Full Install of the CD-ROM release of Malkari, a DirectX 5 video game from 1999, a warning prompt (screenshot attached) appears. IR50_32.dll should have been installed as part of the Indeo codec installation (bundled with the CD), but as a result of the file register failure, there is no intro video playback when opening the installed game. I'm using Linux Mint Cinnamon 22.3. The wineprefix is freshly created. winecfg is set to Windows 98 emulation. There is a workaround to get video playback working: to set a "ir50_32.dll" override (native then builtin). I don't know if this constitutes a bug given the DLL override possibility, but in light of no reports here it goes, the first of maybe several other reports as I'm trying to get this game fully working. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #1 from Rafał Mużyło <galtgendo@o2.pl> --- So, what was the console output that preceded that info popup ? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #2 from Tommy Marplatt <tmarplatt@gmail.com> --- Created attachment 80617 --> http://bugs.winehq.org/attachment.cgi?id=80617 Compressed console log contents I've attached the console log of the InstallShield session until after the warning prompt appears, using WINEDEBUG=+relay,+tid,+seh -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #3 from Rafał Mużyło <galtgendo@o2.pl> --- ...why ? IIRC, the bug reporting page explicitly says 'no relay, unless explicitly asked for'. Let's try this again. Attach the standard console output - no extra channels, then - depending on the content - we'll see if other channels are necessary. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 Tommy Marplatt <tmarplatt@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #80617|0 |1 is obsolete| | --- Comment #4 from Tommy Marplatt <tmarplatt@gmail.com> --- Created attachment 80634 --> http://bugs.winehq.org/attachment.cgi?id=80634 Console log contents I've uploaded the bare console output, no debug flags set. My bad, since the output was so barren of information I went ahead and tried to do more than necessary. In my defence, the notice about not providing anything but the default log output was buried one link deep from the Bugs wiki article (i.e. in the FAQ article), but I still missed it. Thanks for the patience. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #5 from Rafał Mużyło <galtgendo@o2.pl> --- Just to make sure, this output is from the installer, not the game ? Anyway, I've slipped up a bit too: as wine provides that dll (and IIRC, it's in a working state), the question should be "why doesn't the builtin work ?". So, given that dll has its own debug channel, attach the output of the game while using builtin with 'ir50_32' channel first, then do another run with 'ir50_32,quartz' (as that what's likely handling the video - given that it works with native, it hints at a decoding problem). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #6 from Tommy Marplatt <tmarplatt@gmail.com> --- Created attachment 80658 --> http://bugs.winehq.org/attachment.cgi?id=80658 Console log - loading the game with WINEDEBUG=ir50_32 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #7 from Tommy Marplatt <tmarplatt@gmail.com> --- Created attachment 80659 --> http://bugs.winehq.org/attachment.cgi?id=80659 Console log - loading the game with WINEDEBUG=ir50_32,quartz I've attached the requested log outputs. In the latter (including quartz channel) I also chose the main menu option "Play intro cinematic video" since I couldn't remember if the game replayed the video every time it loads or just on the first run. So you may see repeated log messages. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #8 from Rafał Mużyło <galtgendo@o2.pl> --- 011c:trace:ir50_32:IV50_DriverProc 14521116 00C9FF18 401d 00000000 00000000 011c:fixme:ir50_32:IV50_DriverProc Unknown message: 401d 0 0 011c:trace:ir50_32:IV50_DriverProc 14521116 00C9FF18 5000 00dd90a4 0000002c 011c:fixme:ir50_32:IV50_DriverProc Unknown message: 5000 14520484 44 011c:trace:ir50_32:IV50_DriverProc 14521116 00C9FF18 5000 00dd9124 00000054 011c:fixme:ir50_32:IV50_DriverProc Unknown message: 5000 14520612 84 011c:trace:ir50_32:IV50_DriverProc 14521116 00C9FF18 5001 00dd90d0 00000054 011c:fixme:ir50_32:IV50_DriverProc Unknown message: 5001 14520528 84 5000/5001 seems to be ICM_GETSTATE/ICM_SETSTATE 401d - ICM_DECOMPRESS_SET_PALETTE Neither is currently implemented in wine, though it's not determined whether this is the source of this problem. ICM_DECOMPRESS_SET_PALETTE likely doesn't matter, as it just sets the default palette, but one of the other might, if the game expects ICERR_OK response from from one or both... It's difficult to say whether stubbing those two (to just return ICERR_OK) would work - the sparse docs as well as the value of message suggest it's internal codec implementation, but it depends on what the game used it for. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 --- Comment #9 from Rafał Mużyło <galtgendo@o2.pl> --- ...I might have written nonsense again... While the decompress query is handled, BI_RGB currently doesn't handle palette. That results in an error, that might be what forces the driver to close... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59560 Wolfgang Hartl <wolfo.dev@wolke7.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wolfo.dev@wolke7.net --- Comment #10 from Wolfgang Hartl <wolfo.dev@wolke7.net> --- The Malkari intro video is an IV50 compressed video, nominal 24-bit, 512x384. The game requests in the codec the ouput of 8-bit BI_RGB, 512x384. 0130:trace:ir50_32:decompress_query in->planes = 1 0130:trace:ir50_32:decompress_query in->bpp = 24 0130:trace:ir50_32:decompress_query in->height = 384 0130:trace:ir50_32:decompress_query in->width = 512 0130:trace:ir50_32:decompress_query in->compr = 0x30355649 0130:trace:ir50_32:decompress_query in offset (0,0), size 512x384 0130:trace:ir50_32:decompress_query out->planes = 1 0130:trace:ir50_32:decompress_query out->bpp = 8 0130:trace:ir50_32:decompress_query out->height = 384 0130:trace:ir50_32:decompress_query out->width = 512 0130:trace:ir50_32:decompress_query out->compr = 0 Current Wine ir50_32 rejects the 8-bit output, so the playback stops early but the native ir50_32.dll accepts it and provides the output. I patched the ir50_32 to enable 8-bit by trying to do the output with "MFVideoFormat_RGB8". Then game intro gets further: the audio starts and playback begins. But the video is black because winegstreamer cannot create the backend transform: 0130:trace:ir50_32:decompress_begin decoder 003A9A3C, in 003A9B80, out 003A9FB0. 0:00:00.043839567 170162 0x55556467fbc0 ERROR WINE unixlib.c:225:link_element_to_sink: Failed to find src pad compatible to <'':sink> on <videoconvert1>. 0:00:00.043872465 170162 0x55556467fbc0 ERROR WINE wg_transform.c:808:wg_transform_create: Failed to create winegstreamer transform. 0130:trace:ir50_32:IV50_DriverProc 3840572 014A29E8 4013 00000000 00000000 0130:fixme:ir50_32:IV50_DriverProc Unknown message: 4013 0 0 0130:trace:ir50_32:IV50_DriverProc 3840572 014A29E8 4015 00000000 00000000 0130:fixme:ir50_32:IV50_DriverProc Unknown message: 4015 0 0 So, the MFVideoFormat_RGB8 is known/listed in Wine, but the winegstreamer path cannot actually output it for IV50. But, the missing piece is not just “8 bits per pixel”, RGB8 needs a paletted/indexed output. Possible paths: Fix locally in ir50_32, by keeping the backend decode in a known-working format: 1) IV50 -> RGB24 via winegstreamer 2) Only when the app requests 8-bit BI_RGB, accept it in ICM_DECOMPRESS_QUERY. Then, use there the RGB24 output and transform locally to 8-bit palette indexes inside ir50_32 by converting each RGB24 pixel to the nearest palette index. 3) Write it into the app's output buffer. 4) Implement palette messages. This would target the bug in ir50_32 and does not mess with the shared media backend. But feels more as a workaround and is only valid for the IV50. On the other hand the usage of IV50 is rare, 8-bit output even more and the native ir50_32.dll works. And, not sure if this implementation approach would be accepted. A second option would be a broader MFVideoFormat_RGB8 support in winegstreamer. To teach winegstreamer layer to handle paletted RGB8 properly. This could be useful for other codecs too and the defined MFVideoFormat_RGB8 would not be an empty shell. But much bigger impact, more invasive in the general media-backend, harder to test. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla