I know that this is quite an old topic, I hope moderators do not mind. 😉
It seems that there is a lot of confusion regarding S3 MeTaL API support on mobile S3 Savage/IX and MX variants which are derived from the S3 Savage 3D in terms of 3D rendering block. I've seen a lot of screenshots and some videos with software renderer dubbed with "S3 MeTaL API on S3 Savage/IX", which is plain wrong. I don't know why leileilol didn't started her crusade regarding Unreal renderer support and SoftDrv fallback yet, I'll do the honor then. 😉
So, does the S3 Savage/IX support MeTaL API? Yes, although not in any of the stock drivers, so all posts regarding "running" Unreal with S3 MeTaL API on Savage/IX are sadly wrong especially that MeTaL renderer works only in fullscreen mode - make it windowed and SoftDrv will take the lead.
The METAL.DLL library is supposed to support Savage/IX as well as Savage/MX variant in versions 1.0.2.5 and 2.0.3.0. Sadly, due to the issue with board detection it does not work in stock library. When mtlOpen is called PCI bus is searched for the supported S3D board, by default the autodetection feature works only for the S3 Savage/MX w/ MV board variant with device ID 0x8c10 and other variants will simply not work and result in no S3D supported board being found / initialization failure.
There are four variants of the mobile S3 Savage chips:
- S3 Savage/MX w/MV, device ID 0x8c10, working on stock METAL.DLL
- S3 Savage/MX, device ID 0x8c11, not working on stock METAL.DLL
- S3 Savage/IX w/MV, device ID 0x8c12, not working on stock METAL.DLL
- S3 Savage/IX, device ID 0x8c13, not working on stock METAL.DLL
In order to make it working on all variants I've needed to create for each mobile variant separate, patched METAL.DLL library. You can download patched libraries from below link, select one corresponding to your device ID then drop-in to the C:\Windows directory overwriting existing one:
http://tuxality.net/projects/s3savageix/dl/s3 … ix_patch_a1.zip
Archive contains both METAL.DLL 1.0.2.5 and 2.0.3.0 library versions patched for all mobile S3 Savage variants listed above.
Please be aware that S3 MeTaL API works on Windows 9x/ME only, there is no support for NT variants as there is direct hardware access done as well as it depends on the VxD driver implementation. The 0x8c10 device library variant in the archive is of course the vanilla METAL.DLL library, posted just in case. There is most likely a possibility to create one universally patched METAL.DLL file as there is some room in assembly to change PCI devices detection routine, but I'll leave this for further project.
I've also created a simple tool named s3metalinfo that allows to check if S3 MeTaL API is supported on your system. This is a better tool in my opinion than using Unreal for testing as it caused a lot of misunderstanding in vintage gaming community. It can be found here:
http://tuxality.net/projects/s3savageix/dl/s3 … etalinfo_a1.zip
If your board is supported, you should see "S3 MeTaL API is supported on this board" with detailed information about your device. However, if it doesn't work it'll say "Failed to acquire S3 MeTaL interface" with reason "No supported S3D board found". Unreal in such case will result in SoftDrv i.e. software redering fallback in both fullscreen and windowed mode. To get this working you'll need supported S3 Savage 3D, Savage 4, Savage/IX, Savage/MX or Savage 2000 board and of course patched METAL.DLL in case of the mobile variants. 😀
I've attached screenshot from Unreal running for the first time with S3 MeTaL API on S3 Savage/IX w/MV (8c12) in 1024x768x16 resolution and for comparison the same screenshot with software renderer fallback. More screenshots can be found on my webpage if anyone is interested:
http://tuxality.net/projects/s3savageix
While S3 MeTaL API looks really good on the S3 Savage/IX, it sadly does have its own issues. First of all it seems to be capped to 30FPS no matter what, this is done somehow internally in the drivers and I didn't found any solution for this yet. And no, S3Tweak won't help you there. Another issue most likely related to the framerate cap is that audio stutters pretty badly and there is quite a lot of input lag. I strongly suggest to tweak Unreal.ini in order to get best possible experience on S3 Savage/IX chips i.e. to reduce input lag.
I hope this clears up all the misunderstanding regarding S3 MeTaL API support on S3 Savage/IX as well as S3 Savage/MX.