My modest asm skills along a web search led me to try change A0 05 to FF FF FF FF since ESI is a 32-bit register, the menu now leaves you some time to make a choice :)
Uhm, I don't understand ....
The 320 x 280 resolution is emulated by DxWnd
I grabbed the game and hooked the AIRASULT.EXE exe directly on the CD-Rom with DxWnd. The game worked perfectly, though in a stretched window and with crazy speed.
To fix these problems:
"Video / Window Size & Position" set to "Locked size"
"Timing / Frame per seconf / Limit" set to 50 mSec (or a different time if you prefer a different speed)
And the game seems to work pretty well.
Finally, since 320x240 is not that good, I added "DirectX / Bilinear filtering" and the recipy seems juicy.
I must admit I had some luck with this one: I knew that 320x280 resolution should not be a problem (other games require a even lesser resolution that is emulated by DxWnd), and when I read about menu timing problems I immagined that timing could be based on a fixed video frame rate. This is a uncommon situation for PC programs where every well-programmed game should check carefully how much time has passed since last frame blit because video cards can behave very differently.
In this case, where the game simply counts how many times the menu screen was redrawn, the best solution is to enforce the vide delay time by using a sleep call between blits if they occur too rapidly, so exactly what the time limit flag does. But even a better solution (that I tested after my first post) is to set the "DirectX(2) / VSync" selector to "Wait for frequency" that does the same operation but with delays calculated to better simulate a 60Hz monitor. Next DxWnd release will have a dedicated exported file for this game.
Anyway, thank you for bringing to my attention this nice game that offers a nice 3D gameplay and professional movies in a game dated 1996! Thumb up for Air Assault!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Just taking a look at this now - did you get a 'Video not available: cannot find 'vids:iv41' decompressor on all the movies?
EDIT: the other problem with this one is it seems unable to save - you can make config changes in the menu and they aren't saved, for example. I imagine the game is looking for some working path that would have been set if we were using the installer. But the installer is 16 bit and doesn't work even through otvdm.
Last edit: daninthemix 2023-06-04
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
vids:iv41 is the IndeoVideo 4.1(4.5) codec that is included in Windows but disabled by default. You can enable it with the following text in a .reg file and running it:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\drivers.desc]"C:\\Windows\\system32\\ir41_32original.dll"="Intel Indeo® Video 4.5"[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32]"vidc.iv41"="C:\\Windows\\system32\\ir41_32original.dll"
And to disable it again you can use this:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\drivers.desc]"C:\\Windows\\system32\\ir41_32original.dll"=-[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32]"vidc.iv41"=-
The reason Microsoft has it disabled by default is a security concern regarding some potentially malicious code that could be executed from an infected video file presumably.
As for settings not saving it could also be a registry issue where the game tries to write to the registry without permission or is using some old and deprecated method for it.
edit: Forgot the "drivers.desc" field from the registry values.
Last edit: dippy dipper 2023-06-04
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've tried running the game through DxWnd as admin and that hasn't helped. Is there any way we can 'sniff' what the game is trying to do when saving so we can troubleshoot?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Possibly one could run some logging sessions to try and look for it. For example enabling the Dxwnd Logs tab "Overwrite" and "Registry op." and reading the dxwnd.log file to try and figure out if it is using the registry or not. Then there is also the "File I/O op." that could tell where the game is trying to save/load the configuration data in the file system.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've managed to solve the mystery by installing the game in PCEM and then examining the registry. After transplanting the keys to my W11 machine, the game now saves without issue:
about missing codecs and the need to install some possibly crap software, I wonder if a useful feature could be some support to install a custom codec just before running a game and unindtall it after termination
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Well for IndeoVideo which is fairly common with old software a simple trick is to use a couple of registry files to enable and disable the built-in Windows codecs. My understanding is that even Windows 11 still includes the indeocodecs and they are just disabled by default. Of course that will likely change sometime in the future.
In any case attached are the .reg files I use to enable and disable all of the Windows built-in Indeo codecs. These four codecs are: Intel Indeo(R) Video R3.2
Intel Indeo® Video 4.5
Indeo®-video 5.10
Indeo® audio software
As a disclaimer Microsoft has disabled these codecs for security reasons. So the user enables them at own risk and to be safe they can be disabled after no longer needed.
So it is good to include a disclaimer and possibly link to the MS article also.
edit:
Forgot to add that the registry files "should" work from Vista to Win11. And also as they have the WOW6432Node path they are meant for 64-bit OS only. Although it would be trivial to make a 32-bit OS version of the reg files by removing the reference to WOW6432Node.
edit2:
Well I believe the oldest OS version I checked was Windows 8 so I am not 100% sure about Win7 and Vista. Vista came out before the KB update that disabled indeo codecs so it might not have the same file naming depending on how up to date it has been kept. As for Win7 one would need to verify that the dll files follow the "original" re-naming convention. e.g. there should be files like: C:\Windows\SysWOW64\ir32_32original.dll
C:\Windows\SysWOW64\ir41_32original.dll
C:\Windows\SysWOW64\ir50_32original.dll
Last edit: dippy dipper 2023-06-04
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Isn't all this registry setting executed as a consequence of regsvr32 dllname.dll ? I ask because this could be a more generic way to enable codecs, simly by configuring the dll name?
I thought this is a better place for the answer. You mean something like regsvr32 C:\Windows\SysWOW64\ir32_32original.dll? I don't think I have tested that but I guess it would be easy to find out if it works or not.
Last edit: dippy dipper 2023-06-05
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tested and does not work in this case. Probably still works for third party codec dll files only. For example if you have separate IndeoVideo codec installer and try to register the IndeoVideo v5 codec using the "regsvr32 ir50_32.dll" command. But if you want to enable the codecs that come build-in with Windows then the registry edit seems to be the only way to do it that I know of.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
so the only generic way to handle all possible cases seems the activation of a command script (a .bat file or a similar thing) maybe assuminh that a /u argument would undo everything was made before the target startup.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not sure how you came to that conclusion... My point was that the IndeoVideo codecs come with Windows and can be enabled/disabled with the registry edits. Since Indeo is probably the most common video format used in old games providing the .reg files could be useful.
Of course you could fart around with the ancient IndeoVideo installers you can download from the web and try to manually register them using regsvr32 but results are not guaranteed.
Now of course there may be other codecs apart from IndeoVideo that an old game might use and in that case you might be able to install them using the regsvr32 command. For example the game SystemShock 2 has a codec in the main game directory called LGVID.AX that one must register using regsvr32 every time before running the game to see the videos.
In addition the user might already have "messed" with third party codec packs in which case things can get very complicated.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Well when you get back take a look at the contents of "IndeoVideo-codecs-reg.zip" that I posted earlier. To test you should have an .avi file that is encoded with one of the IndeoVideo codecs. Of course if you already have some third party codec installed then testing might not be possible.
In any case I think that providing the .reg files is better than trying to build some automation in Dxwnd. For example the user might not be very happy if Dxwnd disabled the IndeoCodec after running a game. Also with the manual method of running the .reg files the user has full control and can study/edit them as needed.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok, that sounds good. So we could simply place some note in the exported profiles telling that the game may need the codec activation and then maybe add some external files with sample scripts and dll files that the user may decide whether to trust or not.
Maybe that could deserve a dedicated page in the help files.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Those could be under “Dxwnd\IndeoCodecs” -sub folder. An accompanying readme.txt file could go something like this:
Indeo Video codecs were commonly used by old games from the 90's and early 2000's. These codecs come with Windows but have been disabled by default since 2009 by Microsoft due to security concerns. The .reg files can be used to enable or disable the built-in Windows Indeo codecs.
The codecs are:
Intel Indeo(R) Video R3.2
Intel Indeo® Video 4.5
Indeo®-video 5.10
Indeo® audio software
Note:
These registry files should work on Win8 to Win11. (Possibly also on Win7.) These are for 64bit version of Windows. Versions of the reg files for 32-bit OS are available in the 32bit folder (x86).
Warning:
If you have already installed third party codec packs to handle IndeoVideo playback these registry changes might not work or might produce unwanted results.
Disclaimer:
You are enabling the codecs under your own risk understanding that a malicious video file might take advantage of the IndeoCodec vulnerabilities.
Now of course these would cover only the IndeoCodecs but they are the most common ones used by old games in my experience and the easiest ones to enable with a simple registry edit.
EDIT: Updated the suggested readme.txt contents with 64/32 bit OS info and supported Windows version info.
EDIT2: Added a warning about possible third party codec packs.
Last edit: dippy dipper 2023-06-06
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Please note that this is just my suggestion for a best "generic" solution for the IndeoCodec problem with old games on modern Windows OS. I might be wrong and this might not be a good idea so input from other users is always welcome.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi :)
In the same vein of Twisted Metal for Japan, another very limited release of a PSX game for PC : Warhawk !
The game will refuse to start, even though with Win95 and 8-bit color depth, seems like the 320x240 requested mode being the culprit:
And I guess the game will need a timeout patch of some sort,
@ byte 302919 = 81 FE A0 05 = cmp esi, 5A0h (1440)
My modest asm skills along a web search led me to try change A0 05 to FF FF FF FF since ESI is a 32-bit register, the menu now leaves you some time to make a choice :)
Now there are other menus but it's inconclusive,
Like ADJUST OPTIONS @ byte 312134 = 83 FB 14 = cmp ebx, 14h
There is only room to max out value to 0xFF, the menu can be seen for a bit of time but that's it.
Thanks !!!
Uhm, I don't understand ....
The 320 x 280 resolution is emulated by DxWnd
I grabbed the game and hooked the AIRASULT.EXE exe directly on the CD-Rom with DxWnd. The game worked perfectly, though in a stretched window and with crazy speed.
To fix these problems:
"Video / Window Size & Position" set to "Locked size"
"Timing / Frame per seconf / Limit" set to 50 mSec (or a different time if you prefer a different speed)
And the game seems to work pretty well.
Finally, since 320x240 is not that good, I added "DirectX / Bilinear filtering" and the recipy seems juicy.
Last edit: gho 2017-06-17
There is also a "resolution HIGH" option in the game, much better, though the purple sky may show some color problem ...
Last edit: gho 2017-06-17
Thanks, it's working really well !
To be honest I rushed to the forum asking your expertise ! should have gave it a try first X)
I must admit I had some luck with this one: I knew that 320x280 resolution should not be a problem (other games require a even lesser resolution that is emulated by DxWnd), and when I read about menu timing problems I immagined that timing could be based on a fixed video frame rate. This is a uncommon situation for PC programs where every well-programmed game should check carefully how much time has passed since last frame blit because video cards can behave very differently.
In this case, where the game simply counts how many times the menu screen was redrawn, the best solution is to enforce the vide delay time by using a sleep call between blits if they occur too rapidly, so exactly what the time limit flag does. But even a better solution (that I tested after my first post) is to set the "DirectX(2) / VSync" selector to "Wait for frequency" that does the same operation but with delays calculated to better simulate a 60Hz monitor. Next DxWnd release will have a dedicated exported file for this game.
Anyway, thank you for bringing to my attention this nice game that offers a nice 3D gameplay and professional movies in a game dated 1996! Thumb up for Air Assault!
Thanks mate, and thanks to DXWND who can make it available to us again :)
Just taking a look at this now - did you get a 'Video not available: cannot find 'vids:iv41' decompressor on all the movies?
EDIT: the other problem with this one is it seems unable to save - you can make config changes in the menu and they aren't saved, for example. I imagine the game is looking for some working path that would have been set if we were using the installer. But the installer is 16 bit and doesn't work even through otvdm.
Last edit: daninthemix 2023-06-04
vids:iv41 is the IndeoVideo 4.1(4.5) codec that is included in Windows but disabled by default. You can enable it with the following text in a .reg file and running it:
And to disable it again you can use this:
The reason Microsoft has it disabled by default is a security concern regarding some potentially malicious code that could be executed from an infected video file presumably.
As for settings not saving it could also be a registry issue where the game tries to write to the registry without permission or is using some old and deprecated method for it.
edit:
Forgot the "drivers.desc" field from the registry values.
Last edit: dippy dipper 2023-06-04
Thankyou - that's fixed the video playback.
I've tried running the game through DxWnd as admin and that hasn't helped. Is there any way we can 'sniff' what the game is trying to do when saving so we can troubleshoot?
Possibly one could run some logging sessions to try and look for it. For example enabling the Dxwnd Logs tab "Overwrite" and "Registry op." and reading the dxwnd.log file to try and figure out if it is using the registry or not. Then there is also the "File I/O op." that could tell where the game is trying to save/load the configuration data in the file system.
I've managed to solve the mystery by installing the game in PCEM and then examining the registry. After transplanting the keys to my W11 machine, the game now saves without issue:
about missing codecs and the need to install some possibly crap software, I wonder if a useful feature could be some support to install a custom codec just before running a game and unindtall it after termination
Well for IndeoVideo which is fairly common with old software a simple trick is to use a couple of registry files to enable and disable the built-in Windows codecs. My understanding is that even Windows 11 still includes the indeocodecs and they are just disabled by default. Of course that will likely change sometime in the future.
In any case attached are the .reg files I use to enable and disable all of the Windows built-in Indeo codecs. These four codecs are:
Intel Indeo(R) Video R3.2
Intel Indeo® Video 4.5
Indeo®-video 5.10
Indeo® audio software
As a disclaimer Microsoft has disabled these codecs for security reasons. So the user enables them at own risk and to be safe they can be disabled after no longer needed.
edit:
Added a version for 32-bit OS (x86).
Last edit: dippy dipper 2023-06-06
P.S.
Seeing as Dxwnd already includes the "nogameux" registry files the indeo codec enabler/disabler registry files could be distributed similarly.
As for the vulnerabilities in ideo codecs there is an old MS article from Dec 2009 here:
https://support.microsoft.com/en-us/topic/microsoft-security-advisory-vulnerabilities-in-the-indeo-codec-could-allow-remote-code-execution-december-8-2009-680127c6-f4fd-e533-b641-6ab3a25fb4f4
So it is good to include a disclaimer and possibly link to the MS article also.
edit:
Forgot to add that the registry files "should" work from Vista to Win11. And also as they have the WOW6432Node path they are meant for 64-bit OS only. Although it would be trivial to make a 32-bit OS version of the reg files by removing the reference to WOW6432Node.
edit2:
Well I believe the oldest OS version I checked was Windows 8 so I am not 100% sure about Win7 and Vista. Vista came out before the KB update that disabled indeo codecs so it might not have the same file naming depending on how up to date it has been kept. As for Win7 one would need to verify that the dll files follow the "original" re-naming convention. e.g. there should be files like:
C:\Windows\SysWOW64\ir32_32original.dll
C:\Windows\SysWOW64\ir41_32original.dll
C:\Windows\SysWOW64\ir50_32original.dll
Last edit: dippy dipper 2023-06-04
gho wrote:
I thought this is a better place for the answer. You mean something like
regsvr32 C:\Windows\SysWOW64\ir32_32original.dll
? I don't think I have tested that but I guess it would be easy to find out if it works or not.Last edit: dippy dipper 2023-06-05
Tested and does not work in this case. Probably still works for third party codec dll files only. For example if you have separate IndeoVideo codec installer and try to register the IndeoVideo v5 codec using the "regsvr32 ir50_32.dll" command. But if you want to enable the codecs that come build-in with Windows then the registry edit seems to be the only way to do it that I know of.
so the only generic way to handle all possible cases seems the activation of a command script (a .bat file or a similar thing) maybe assuminh that a /u argument would undo everything was made before the target startup.
Not sure how you came to that conclusion... My point was that the IndeoVideo codecs come with Windows and can be enabled/disabled with the registry edits. Since Indeo is probably the most common video format used in old games providing the .reg files could be useful.
Of course you could fart around with the ancient IndeoVideo installers you can download from the web and try to manually register them using regsvr32 but results are not guaranteed.
Now of course there may be other codecs apart from IndeoVideo that an old game might use and in that case you might be able to install them using the regsvr32 command. For example the game SystemShock 2 has a codec in the main game directory called LGVID.AX that one must register using regsvr32 every time before running the game to see the videos.
In addition the user might already have "messed" with third party codec packs in which case things can get very complicated.
wait, wait ... I meant a script to add registry entries for indeo codecs or do whatever else just in other cases.
I am about to get back from the vacation, sure I will explain myself better sitting at my desk.
Last edit: gho 2023-06-05
Well when you get back take a look at the contents of "IndeoVideo-codecs-reg.zip" that I posted earlier. To test you should have an .avi file that is encoded with one of the IndeoVideo codecs. Of course if you already have some third party codec installed then testing might not be possible.
In any case I think that providing the .reg files is better than trying to build some automation in Dxwnd. For example the user might not be very happy if Dxwnd disabled the IndeoCodec after running a game. Also with the manual method of running the .reg files the user has full control and can study/edit them as needed.
Ok, that sounds good. So we could simply place some note in the exported profiles telling that the game may need the codec activation and then maybe add some external files with sample scripts and dll files that the user may decide whether to trust or not.
Maybe that could deserve a dedicated page in the help files.
All that the user would need are the .reg files that I posted "IndeoVideo-codecs-reg.zip".
A 32-bit version is now also posted.
Those could be under “Dxwnd\IndeoCodecs” -sub folder. An accompanying readme.txt file could go something like this:
Now of course these would cover only the IndeoCodecs but they are the most common ones used by old games in my experience and the easiest ones to enable with a simple registry edit.
EDIT:
Updated the suggested readme.txt contents with 64/32 bit OS info and supported Windows version info.
EDIT2:
Added a warning about possible third party codec packs.
Last edit: dippy dipper 2023-06-06
Please note that this is just my suggestion for a best "generic" solution for the IndeoCodec problem with old games on modern Windows OS. I might be wrong and this might not be a good idea so input from other users is always welcome.