Page 1 of 3

A new TgSmush.dll

Posted: Mon Jun 23, 2014 5:13 pm
by JeremyaFr
Hi,

Do you remenber the TgSmush dll made by Isildur? Before that, there was a dll made by Defiant.

The first version of XCR played a video on a separate window using DirectShow. That caused Windows flickering.
Isildur solved this problem is the second version of XCR by using more low level api. The player does not use a separate window, but instead sends each frame to the xwa exe engine. But since the xwa engine is 640x480 16 bits, XCR converts the video to that resolution.

Sending each video frame to the exe is fine for the interface videos (like marko, pod or techroom) because the playing is smooth. But this was not a good solution for cutscenes (like logofinal) because the video resolution is restrained to 640x480 16-bits.

I think Isildur was close to a solution that allow smooth playing and hight resolution cutscenes. But the project was not finished.

So, like Bman has suggested, I am working on a new TgSmush.dll.

Re: A new TgSmush.dll

Posted: Tue Aug 05, 2014 4:12 am
by Bman
Edited. Jeremy, I finished testing a new cutscene at 1280 x 1024 pixels per .bmp 24-bit colored frame, compiled into a .avi video both with and without video compression codecs.

Using Isildur's current dll file I got following results:
WinXP Pro 32-Bit or Windows 8 64-bit. Cutscene looks bad. Resolution is dumbed down 640x480 but plays and fills the whole display screen as usual.

Using your new dll file I got following results:
Still won't work under WinXP Pro 32-Bit.
Under Windows 8 64-bit, looks great (remains sharp & high color). However it seems to center the video cutscene in the center of the display screen and adds black background boarder to the left and right of the video. Does the same thing for .avi videos compiled at native 640x480 pixel frames. Is the cutscene supposed to fill the whole display screen without pixellating image quality ?
It could be just my display monitor which is setup as 1920 x 1080 desktop. But it's working. Thanks.

Re: A new TgSmush.dll

Posted: Wed Aug 06, 2014 9:53 pm
by JeremyaFr
Hello,

Here is the dll:
TgSmush.zip

Supported formats are .snm (redirected to the original dll), .avi, .wmv.
The video is played at fullscreen using the desktop resolution.
Internally, the dll uses DirectShow to play the video.
The aspect ratio is preserved and the video is centered to the screen.

For example, if your screen's resolution is 1920x1080 and the video resolution is 1280x1024, the rendered video size will be 1350x1080 (1280*1080/1024=1350) and a 285 ((1920-1350)/2=285) pixels wide black border will appear on left and right.

The minimal requirement is Windows XP SP2.

Re: A new TgSmush.dll

Posted: Thu Aug 07, 2014 10:34 pm
by JeremyaFr
An update.
I have integrated Isildur's code into the dll. It is used to play avi files whose resolution is lower 640x480.

Re: A new TgSmush.dll

Posted: Thu Aug 07, 2014 11:55 pm
by Darksaber
First in your readme it says "1) rename the original TGSMUSH.DLL to TgSmusgOrig.dll"

Is this correct to rename the TGSMUSH.DLL to TgSmusgOrig.dll with a "G" instead of a "H"???

Next tried the new Dll file, but upon starting XWA it comes up with this
Smush1.jpg
I found the file on the web and placed it in the system32 folder and because my system is Win7 64bit I also placed it in the SysWOW64 folder

tried to start XWA again, but this error message appeared
Smush2.jpg
Restarted my pc, tried to start XWA again and got the same error message

Removed your TGSmush.Dll replaced with Isildur TGSmush.dll started XWA and it played a custom cutscene

It might work with WinXP and Win8, but it seems it doesn't work with Win7 64bit :(

Re: A new TgSmush.dll

Posted: Fri Aug 08, 2014 12:51 am
by JeremyaFr
Thanks for testing.

The original TGSMUSH.DLL has to be renamed to TgSmushOrig.dll.
It's the same thing as with Isildur's dll.
I have corrected the typo error in the readme.

The error related to msvcp120.dll is because your system doesn't have the visual c++ 2013 runtime dlls installed.
Here is a download link to the runtime:
Visual C++ Redistributable Packages for Visual Studio 2013: vcredist_x86.exe
http://www.microsoft.com/en-us/download ... x?id=40784

Note that this is not the final version of the dll. I have uploaded it so that compatibility issues can be more easily identified.
There may be some issues on Windows XP or if you need to use a custom ddraw.dll.

Re: A new TgSmush.dll

Posted: Fri Aug 08, 2014 10:57 am
by Darksaber
I thought it was a Typo, but thought I would ask :)

And thanks for the link to visual c++ , I installed it and your new DLL ran just fine

Thanks for that :)

Re: A new TgSmush.dll

Posted: Sat Aug 09, 2014 3:56 am
by Bman
Ok, thanks for pixel resolution explanation. I won't be creating anything that small. :-) Oh, how does the color depth work? Does it still dumb down high-color frames to 16-bit depth, or does it keep the native color of the recorded .avi ?

Re: A new TgSmush.dll

Posted: Sat Aug 09, 2014 1:45 pm
by JeremyaFr
For snm files, the color depth is 16 bits.
For avi files, if the resolution of the video is lower than or equal to 640x480 then the color depth is reduced to 16 bits, otherwise the color depth of the video is used.
For wmv files, the color depth of the video is used.

Re: A new TgSmush.dll

Posted: Tue Aug 12, 2014 12:50 am
by JeremyaFr
If you use the ZeqMacaw's ddraw.dll wrapper from jkhub.net (credits: ZeqMacaw, Sige, Timeslip) published in 2009, you will see an error message box.
The title is "ActiveMovie Window: XWingAlliance.exe - Entry Point Not Found".
The message is "The procedure entry point CompleteCreateSysmemSurface could not be located in the dynamic link library C:\Windows\SYSTEM32\D3DIM700.DLL".

The error appears because this wrapper does not fully/correctly wrap the system ddraw.dll.

According to the description, what this dll does is:
Changed the function used to clear the z-buffer -- from DirectDrawSurface.Blt(DDBLT_DEPTHFILL) to Direct3DViewport3.Clear2(D3DCLEAR_ZBUFFER).
This dll changes the method used to clear the depth buffer. Is there another reason to use it? If the answer is no, the simplest way to change the z-buffer clearing method is to modify the xwa exe, and to not use a custom dll to do that.

Is the use of ZeqMacaw's ddraw wrapper really needed?

Re: A new TgSmush.dll

Posted: Tue Aug 12, 2014 3:54 am
by Bman
Aside from the Cutscenes issue, I'd say yes, it's needed for many of us who use older ATI cards. Although the option to have both ways might help some people or not. When I installed XWA on Windows8.1 64-bit, I tested and documented that this modified "ddraw.dll" file was necessary to display 3D objects correctly, AFTER running Reimar's 32bitmode.bat patch to fix the "Targeting craft and then all goes black" screen issue, and then the "FixedClear.bat" patch too. I remember that error message only came up one or two times after I first lauched the game, never seen it occur since then and all is running well except for the minor issues of text corruption during the hangar loading "review your briefing" screen etc. Anyway, in my opinion, I think your beta version of your TGSmush.dll is working well. What are your goals to make it better ?

Re: A new TgSmush.dll

Posted: Tue Aug 12, 2014 1:57 pm
by JeremyaFr
Bman wrote:Anyway, in my opinion, I think your beta version of your TGSmush.dll is working well. What are your goals to make it better ?
If playing videos works fine, I think the dll could be considered as a definitive version.

Can you say if it works on Windows XP?

Re: A new TgSmush.dll

Posted: Fri Aug 15, 2014 7:05 am
by Bman
Still does not work under XP SP3 32-bit. Meaning game engine will not even start since the opening cutscene is processed first. Something in .dll it doesn't like. Thanks.

Re: A new TgSmush.dll

Posted: Fri Aug 15, 2014 8:31 pm
by JeremyaFr
Hello,

Could you run the following tests?

EDIT: link removed
TgSmushTests.zip
  • Test0: Check presence of Visual C++ 2013 Runtime (x86)
  • Test1: empty program
  • Test2: empty program
  • Test3: link to TgSmushOrig.dll
  • Test4: link to TgSmush.dll
  • Test5: link to TgSmush.dll from XWA exe

Re: A new TgSmush.dll

Posted: Sun Aug 17, 2014 3:10 am
by Bman
Ok, Jeremy I was missing the above 2013 VB C++ runtime components. Thanks. All of those tests said OK. Results using XP Pro 32-bit SP3:
1) All of the existing custom .avi video/cutscene movies play in full screen mode like Isildur's version. There are no black boarders. Great job!

2) However, the custom .avi cutscene videos recorded in 640x480 frame format (and probably smaller) are missing audio.

3) The new High Definition .avi cutscene I finished plays fantastic, crisp detail (recorded at 1280x1024 frames), and plays it's internal audio.

Great job again. Just #2 seems to be the only problem left. Thanks.

Re: A new TgSmush.dll

Posted: Sun Aug 17, 2014 4:40 pm
by JeremyaFr
I have corrected the problem #2.
Just re-download TgSmush.zip. It should be fine.

Things that need to be tested:
  • snm video
  • avi video <= 640x480
  • avi video > 640x480
  • When the user presses spacebar (or by another method), the video playback must be interrupted, otherwise it must not be interrupted.

Re: A new TgSmush.dll

Posted: Tue Aug 19, 2014 3:20 am
by Bman
Edited

Re: A new TgSmush.dll

Posted: Tue Aug 19, 2014 6:34 pm
by JeremyaFr
Thanks for the crash report. It's very useful: the address indicates exactly where the problem is.
I have corrected that.

The keys to interrupt the playback are:
  • with keyboard: Escape, Space, Return, Back
  • with mouse: Left Button, Right Button
It's the same keys for any video (snm, avi <= 640x480, avi > 640x480, wmv).

I have tested the dll on Windows 8.1 64-bit:
  • snm: OK (I used xwa videos)
  • avi <= 640x480: OK (I used DSUCP videos)
  • avi > 640x480: OK (I used Big Buck Bunny movie)
  • wmv: OK (I used Windows 7 Wildlife sample video)

Re: A new TgSmush.dll

Posted: Thu Aug 21, 2014 7:38 am
by Bman
Ok, everything is working perfectly now for XP Pro SP3 32-Bit side. All custom custscene.avi frame sizes above and below default 640x480 size are fine. Tested a stock .snm video from CD and it plays fine too. The interrupt keys work fine. Perhaps if a few others can test under Win7 O/S for another week or so for errors/issues, I think this cutscene project is perfectly done. Great job on this and perfecting Isildur's work.

Edit: Also, if playing a HD/high resolution custom.avi video with Windows "Extended Desktop" projected onto a second monitor, the video will automatically be scaled down to default 640x480 display and is very pixelated. Solution is to turn off the Extended Desktop before playing XWA.

Ok to test a custom video, say it's called Battle2.avi, one must create an empty file with same name but give it a .snm extention. So just create a new text file with nothing in it, save 0Kb, and rename it, i.e.--Battle2.txt to Battle2.snm with your Battle2.avi file in the .../Movies folder. Your custom video file should also be referenced correctly in the ...FrontRes/Cutscene folder, etc.

Re: A new TgSmush.dll

Posted: Sun Sep 21, 2014 7:24 am
by Bman
Jeremy to recap, using XP-Pro SP3 32-bit, your custom TGSmush.dll works perfectly, for 640x480 and higher resolution videos.

Using Windows8.1 64-bit, the cutscenes with 640x480 frames stretch across the screen like Isildur's code did. Works fine.
When playing a 1280x1024 video cutscene, the game forces it into a 4:3 aspect ratio meaning there are still black boarders on each side of the cutscene. Is there a way to make it so it stretches across the screen too without the video pixellating and losing color quality & sharpness ?
Thanks.

Re: A new TgSmush.dll

Posted: Thu Sep 25, 2014 6:27 pm
by JeremyaFr
I have uploaded an update.

The dll should now work on a multi monitors system.

I have added a config file.

Code: Select all

; TgSmush.cfg
; config file for TgSmush.dll

; PreserveAspectRatio = 0 (no) or 1 (yes)
; When set to 0, the display will be stretched.
; When set to 1, the aspect ratio will be preserved.
PreserveAspectRatio = 1

Re: A new TgSmush.dll

Posted: Tue Sep 30, 2014 7:56 am
by Bman
Works perfectly, thanks! Great idea with the *.cfg files so people can adjust.

Re: A new TgSmush.dll

Posted: Fri Oct 24, 2014 6:43 pm
by Darksaber
Hi Jeremy, do you think this is the final version now??

Re: A new TgSmush.dll

Posted: Fri Oct 24, 2014 8:17 pm
by JeremyaFr
Here is the release (final) version 2.1:
TgSmush.2.1.zip

This dll requires Windows XP SP2 or superior.

Re: A new TgSmush.dll

Posted: Sat Sep 12, 2015 12:08 am
by Dufar
Is this included in the 1.3 update by default?