mh-nexus
Blog Articles Programs

 

About Contact Forum

AWE64 on all Intel-compatible CPUs

 

It is now a long time ago I bought my SB AWE64 and a bit late to write this article, but perhaps somebody looked for this all the time and is happy that he/she finally found a description to make Wavesynth WG work :-)

Normally the AWE64 can only exploit its full potential if you have a genuine Intel-processor (i.e. use of 64 voices, wavetable, ...)
Various reasons are floating around, some say the 6x86 Cyrix chip isn't capable (lack of Pentium/Pentium Pro instructions) to run the Wavesynth WG software. Another reason might be a dispute between Cyrix and Creative because of Cyrix's Media GX processor.

However this situation is pretty bad for people who bought a Cyrix together with an AWE64 and then had to notice that WaveSynth/WG doesn't work.
As this is exactly the feature of the soundcard that is interesting, I tried to find a way to get what I paid for. At least with my Cyrix 6x86 MX the installation and execution of Wavesynth WG worked. Other sources claim it would crash on Cyrix processors, so maybe it depends on the exact model.


How to make it work?

Find out how the CPU-check is done

First of all I noticed that they check for the processor-type only at setup. In no special hope to find something useful, I looked at the temp directory, because InstallShield always decompresses its "work files" there, and found a dll called "SYSINFO". As this name gave me an appealing idea I looked at the list of the exported functions and was pretty optimistic to be able to avoid this annoying CPU-check.

Here is the complete description how to remove the CPU-detection, you will need the following:

Open your AWE-Setup-CD in the Explorer and copy only the folder with your language to your harddisk.
Then open this folder (e.g. ENGLISH) and change into its "Win95"-subfolder.
Now start setup.exe and look in your Windows-"TEMP"-folder for something like "_ISTMP0.DIR".
The right folder contains a bitmap called "AWE64XX.BMP". On top of that you will see three dlls, where "SYSINFO.DLL" (a very suggestive name :-) is the only we have to analyse.
Use a tool like QuickView or Property Edit to get some information about the exported functions:

Shot of the PEInfo-part of PropertyEdit part of Property Edit

As you can see, again, the names are very suggestive and, best of all, it seems as if the functions don't need any parameter.
You can easily guess that the return types are either PChar or an Integer (probably 32 Bit).

I found out it to be:
GetCPUClass: DWORD
GetCPUMake: DWORD
GetCPUModel: DWORD
GetCPUName: PChar
GetCPUSpeed: DWORD
GetMemorySize: DWORD

Example of how to import the GetCPUName in Delphi:

function GetCPUName: PChar; stdcall; external 'D:\desktop\sysinfo.dll';

The simplest way to find out what results the setup-routine needs to install the complete software, is to write a small program that uses the original "sysinfo.dll".
Import all functions of "sysinfo.dll", call them in your program and output in some way the results.
Then execute this program on at least an Intel Pentium 90 and note the information your program displays.

GetSysInfo in action screenshot of the "sysinfo.dll"-test-application


Write your own CPU-check and replace the original

Based on this knowledge, you are ready to write your own dll: Export all functions "sysinfo.dll" does, but return, instead of the correct values, the values you collected on the Intel-machine.

Finally you need to exchange Creative's sysinfo.dll with yours:

So look up icomp.exe in your InstallShield/InstallShield Express directory and copy it to "C:\Windows".

Change into the copied install-directory (LANGUAGE\WIN95) and create there a "temp"-folder.
Now execute the following command in a DOS-box to extract "_setup.lib" into the "temp"-folder.
icomp _SETUP.LIB temp\*.* -d -i

Locate Creative's "Sysinfo.dll" and replace it with your own "Sysinfo.dll".
Then compress all together to "_setup.lib":

change into temp-folder and execute
icomp *.* ../_SETUP.LIB -c -i

Delete the temp-folder and you are done.

That's all. Now you can install WaveSynth/WG from every CPU. However you will only get satisfying results if the CPU is at least as powerful as a Pentium 90.

If you want AWE64 Setup to install WaveSynth/WG independently of the language you have to replace sysinfo.dll like described above for every language-directory.