2010-06-04

Compiling WinUAE 2.1.0

Requirements:
  • Visual Studio 2010
  • installed the most recent WDK (also on XP SP3)
  • installed the most recent DirectX SDK
Here's a note. It is worth to all the files *.h in the WDK and the DirectX SDK switch to read-only. Let's check content of $(USERPROFILE)\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user. Its should look like this:


$(ExecutablePath);C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin;C:\Program Files (x86)\NASM
$(IncludePath);C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include;C:\DDK_7.1\inc\api
$(ReferencePath)
$(LibraryPath);C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Lib\x86;C:\DDK_7.1\lib\wxp\i386
$(SourcePath)
$(ExcludePath);C:\Program Files\Microsoft SDKs (x86)\Windows\v7.0A\Include


The idea is to place VS2010 path $(Path*) always at the very beginning. At this stage, you should properly set up the path to the WDK and DirectX SDK. Best to do it here, so you will not have to configure each project individually. Download NASM, install it and add it to ExecutablePath Grab the source of WinUAE. Create a directory winuae-base. Extract the sources to directory winuae. Also grab the source of WinUAE from the GIT repository http://github.com/tonioni/WinUAE.git (see the official site of the project, Downloads section.) I used TortoiseGIT. Requires msysgit. During the installation of msysgit select Run Git From Windows Command Promp. Copy the directory winuae-git/prowizard, which is missing in official source 2.1.0.
Time to get a lot of packages needed to compile WinUAE. Here is an excellent source of knowledge on that subject. Things such as OpenAL, networking, printers, or the functionality which these packages provide, usually requires that WinUAE has access to the appropriate DLLs. They are not required at start time, instead they are loaded dynamically if necessary. WinUAE is prepare for situation when they do not exists. I am concentrating only at compiling WinUAE with minimum number of changes. There is possibility to compile WinUAE without all those packages. Basic elements such as CD, HDD, games, sound will work. However, this requires lot of work. OpenAL Download OpenAL 1.1 Core SDK. Install it. Create a directory winuae-base/openal and copy there al.h, alc.h, OpenAL32.lib. We can uninstall OpenAL now. zlib Download a source package, extract to winuae-base/zlib unrar Download UnRAR.dll and to directory winuae-base/unrar extract unrar.h. WinPcap Download Developer's Pack and extract to directory winuae-base/winpcap directories Include and Lib. FreeType Download Binaries and exract to directory winuae-base/freetype directories Include and Lib. From the directory tree eliminates freetype2. libpng Download source and extract to directory winuae-base/libpng. TVicPort Download, install, copy to directory winuae-base/tvicport file TVicPort.h. And in my case, uninstall. Catweasel Download the latest version Catweasel ISA/MK3/MK4/MK4plus. Extract to directory winuae-base/catweasel file catweasl_usr.h. Ghostscritp Download source and extract to directory winuae-base/ghostscript files errors.h, iapi.h, ierrors.h. PortAudio Download version v19. Extract to directory winuae-base/portaudio. fdrawcmd Downsload this file and save to winuae-base/fdrawcmd. G15 LCD monitor Download drivers. Install them. Look for LCDSDK_3.04.143.zip. Extract to directory winuae-base/logitechlcd files lglcd.h and lglcd.lib. Drivers can be uninstalled now. WinIO Extract to winuae-base/winio content of the directory Source. ParaPort Save content of the header file to winuae-base/paraport/paraport.h (preferably copy it from page's source). wnaspi32 Writes it to winuae-base/wnaspi32/wnaspi32.h enet Extract to directory winuae-base/enet.
To directory winuae-base/winuae/od-win32/winuae_msvc10/ copy solution file from GIT repository. Open solution. Remove the project unpackers. Remove files *.obj from the project WinUAE. In project create folder asm and add the files *.asm, which is obj's you generate. Select them all and open properties. Select all configurations. As Item Type select Custom Build Tool. Click apply. In Custom Build Tool set: Command Line: nasm.exe -O1 -f win32 -Xvc -o "$(IntDir)%(Filename).obj" "%(RootDir)%(Directory)\%(Filename).asm" -w-orphan-labels Description: Compiling asm file %(Filename).asm Outputs: $(IntDir)%(Filename).obj;%(Outputs) For projects build68k, genblitter, gencpu, gencomp for Pre-Link Event and Post-Build Event unify entries for all configurations. For build68k change generated file cpudefs.c to cpudefs.cpp. Same in project genblitter and genlinetoscr. Set dependencies between projects:
  • winuae depends on genblitter, gencpu, gencomp, genlinetoscr, prowizard.
  • gencpu and gencomp depends on build68k.
In the project winuaee properties add reference for prowizard and set Output File to the default value for all configurations. Select configuration Debug for build. In the solution properties in section Configuration Properties for all configurations check for build only build68k, gencpu, gencomp genblitter, genlinetoscr, prowizard, winuae. Build build68k, genblitter - should be no problems. Build gencomp, there are some errors. In sysdeps.h before #include <tchar.h> place #include <windows.h>. Build again. Build gencpu - without problems. Build genlinetoscr. There are some errors. For projects build68k, gencpu, gencomp, genlinetoscr, genblitter for all configurations set Output Directory and Intermediate Directory to $(Configuration)\, and Output File set to $(OutDir )\..\$(TargetName)$(TargetExt). Build genlinetoscr again. Build prowizard. Errors. Copy value of Additional Include Directories from Release to Debug. Build again. Unifies content of all Additional Include Directories in each project. Because I couldn't find lib for wacom tablet so I had to disable tablet functionality. In short just comment #include <wintab.h>, #include <pktdef.h> and follow the errors. Instead of commenting or removing code you may add new preprocessor definition to sysconfig.h. Remove from Linker/Additional Dependencies entry wintab32.lib for all configurations. Remove from Delay Loaded DLLs entry wintab32.dll for all configurations. For project winuae set the Output Directory and Intermediate Directory to $(Configuration)\ for all configurations. Set Output File to the default value for all configurations. Build project winuae. All errors are associated with lack of headers. Add to Additional Include Directories: ..\..\..\catweasel;..\..\..\enet\include;..\..\..\fdrawcmd;..\..\..\freetype\include;..\..\..\libpng;..\..\..\logitechlcd;..\..\..\openal;..\..\..\paraport;..\..\..\portaudio\include;..\..\..\tvicport;..\..\..\unrar;..\..\..\winio\Dll;..\..\..\winpcap\include;..\..\..\wnaspi32;..\..\..\zlib;%(AdditionalIncludeDirectories) Two errors remained: syntax error : identifier 'PARAPORT_INFO' Remove: typedef BOOL (*getPortInfo)(HANDLE, PARAPORT_INFO*); static getPortInfo pp_getportinfo; pp_getportinfo = (getPortInfo)GetProcAddress (para, "getPortInfo"); None of these are in use. As to the second error: 'Pa_OpenStream' : cannot convert parameter 7 from 'int (__cdecl *)(const void *,void *,unsigned long,const PaStreamCallbackTimeInfo *,PaStreamCallbackFlags,void *)' to 'PaStreamCallback (__stdcall *)' In portaudio.h decorate declaration of PaStreamCallback with __cdecl. Build again winuae. Now it's just linking errors left. Unifies Linker/Additional Dependencies and Delay Loaded DLLs for all configuration for project winuae. Add to Additional Library Directories for all configurations: ..\..\..\logitechlcd;..\..\..\winpcap\Lib;..\..\..\openal;..\..\..\freetype\lib Add to solution WinIo.vcproj. Add to references of winuae project WinIO. Remove winio.lib from Linker/Additional Dependencies. For project WinIO set the Output Directory and Intermediate Directory to $(Configuration)\ for all configurations. Make sure that for solution proper configurations were set up, it's going mess very often, specially after adding project or changing configuration (adding, removing, renaming). Build WinIO. Build again winuae. Now zlib. Do exactly as before in WinIO. Project name is zlibstat.vcxproj. Build zlibstat. Build winuae. Now libpng. Edit libpng.vcxproj. Remove <import project="$(SolutionDir)\zlib.props">. Add the project to the solution. Set Output Directory and Intermediate Directory to $(Configuration)\ for all configurations. And Target Name to $(ProjectName) for all configurations. Set Additional Include Directories to ..\..\..\..\Zlib for all configurations. In solution properties set proper Debug Library and Release Library for the corresponding solution configuration. Add to references of winuae project libpng. Remove libpng.lib from Linker/Additional Dependencies. Build libpng. Build winuae. Time for portaudio. Add to solution portaudio.vcproj. Add to references of winuae project portaudio. Set Output Directory and Intermediate Directory to $(Configuration)\ for all configurations. Set Output File the default value for all configurations. Remove portaudio_x86.lib from Linker/Additional Dependencies for all configurations. Build PortAudio. Remove directory ASIO from disk like from the project Build. Remove portaudio.def from the project. Build. Clear for all configurations Module Definition File. Add the preprocessor symbols PA_NO_ASIO for all configurations. Change in Delay Loaded DLLs from portaudio_x86.dll to portaudio.dll. Build. Note: After you changed dll's name you can't use original dll. Build winuae Time for enet. Add to solution enet.dsp. Add to references of winuae project enet. Set Output Directory and Intermediate Directory to $(Configuration)\ for all configurations. Set Output File to the default value for all configurations. Remove enet.lib from Linker/Additional Dependencies for all configurations. Build enet. Build winuae. Remove prowizard.lib from Linker/AdditionalDependencies for all configurations. Build winuae. Time for errors like Unresolved externals. For project enet, libpng, prowizard change calling convention to stdcall for all configurations. Project portaudio does not export any symbols. Add header files to the project portaudio. Place at the top of portaudio.h: #ifdef _USRDLL #define DELC_EXTERN __declspec(dllexport) #else #define DELC_EXTERN __declspec(dllimport) #endif Decorate with DELC_EXTERN each function in portaudio.h. Add __cdecl to each function. Clear property Linker/Advanced/Import Library for all configurations. Open pcap.h, packet32.h, remote-ext.h and every function that is reported as Unresolved external decorate with __cdecl (and for sure all others too). At this point only errors like multiply symbol define left. For projects enet, winuae, portaudio, prowizard, libpng, zlibstat, winio for all configurations set up properly Runtime Library. Build winuae. And we have the executable file. When it comes to Release. Add to the project zlibstat to Pre_Build Event: cd ..\..\masmx86 bld_ml32.bat

2010-06-01

Kompilacja WinUAE 2.1.0

Wymagania:
  • Visual Studio 2010
  • zainstalowane najlepiej najnowsze WDK (także pod XP SP3)
  • zainstalowane najlepiej najnowsze DirectX SDK
Tutaj jedna uwaga. Warto sobie wszystkie pliki *.h w WDK i DirectX SDK przestawić na tylko do odczytu. Sprawdźmy plik $(USERPROFILE)\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user. Jego zawartość powinna wyglądać mniej więcej tak:


$(ExecutablePath);C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin;C:\Program Files (x86)\NASM
$(IncludePath);C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include;C:\DDK_7.1\inc\api
$(ReferencePath)
$(LibraryPath);C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Lib\x86;C:\DDK_7.1\lib\wxp\i386
$(SourcePath)
$(ExcludePath);C:\Program Files\Microsoft SDKs (x86)\Windows\v7.0A\Include


Chodzi o to by ścieżki dołączane przez VS2010 typu $(*Path) były na samym początku. Na tym etapie powinniśmy poustawiać odpowiednio ścieżki do WDK i DirectX SDK. Najlepiej zrobić to tutaj, dzięki czemu nie będziemy musieli konfigurować każdego projektu z osobna. Pobierz NASM, zainstaluj go i dodaj go do ExecutablePath Pobieramy źródła WinUAE. Utwórz katalog winuae-base. W nim katalog winuae do którego wypakuj źródła. Pobieramy także źródła WinUAE z repozytorium GIT http://github.com/tonioni/WinUAE.git (patrz oficjalna strona projektu, sekcja Download). Ja użyłem do tego TortoiseGIT. Wymaga do działania msysgit. Podczas instalacji msysgit wybierz Run Git From Windows Command Promp. Kopiujemy katalog winuae-git/prowizard, którego brakuje w oficjalnych źródłach 2.1.0.
Czas na pobranie mnóstwa pakietów wymaganych do poprawnej kompilacji WinUAE. Tutaj doskonałe źródło wiedzy na ten temat. Skorzystanie np. z OpenAL, obsługi sieci, drukarek, czyli funkcjonalności której te pakiety dostarczają, wymaga z reguły by WinUAE miał dostęp do odpowiednich bibliotek DLL. Nie są one wymagane w momencie startu, są ładowane dynamicznie w razie potrzeby. WinUAE radzi sobie dobrze z obsługą sytuacji gdy ich nie ma. Ja skupiam się w tylko na skompilowaniu WinUAE z minimalną liczbą zmian. Można i to z sukcesem skompilować WinUAE bez tych wszystkich pakietów. Podstawowe elementy takie jak CD, HDD, gry, dźwięk będą działać. Wymaga to jednak dużego nakładu pracy. OpenAL Pobieramy OpenAL 1.1 Core SDK. Instalujemy. Tworzymy katalog winuae-base/openal i kopiujemy tam al.h, alc.h, OpenAL32.lib. Możemy odinstalować. zlib Pobieramy paczkę źródeł, wypakowujemy do winuae-base/zlib UnRAR Pobieramy UnRAR.dll i do katalogu winuae-base/unrar wypakowujemy unrar.h. WinPcap Pobieramy Developer's Pack i do wypakowujemy do katalogu winuae-base/winpcap katalogi Include i Lib. FreeType Pobieramy Binaries, do katalogu winuae-base/freetype wypakowujemy katalogi Include i Lib. Ze struktury katalogów eliminujemy freetype2. libpng Pobieramy źródła i wypakowujemy do katalogu winuae-base/libpng. TVicPort Pobieramy, instalujemy, do katalogu winuae-base/tvicport kopiujemy TVicPort.h. I w moim przypadku odinstalowujemy. Catweasel Pobieramy najnowszą wersję Catweasel ISA/MK3/MK4/MK4plus. Do katalogu winuae-base/catweasel wypakowujemy catweasl_usr.h. Ghostscritp Pobieramy źródła i wypakowujemy do katalogu winuae-base/ghostscript pliki errors.h, iapi.h, ierrors.h. PortAudio Pobieramy wersję v19. Wypakowujemy do katalogu winuae-base/portaudio. fdrawcmd Pobieramy ten plik i zapisujemy do winuae-base/fdrawcmd. G15 LCD Pobieramy sterowniki. Instalujemy je. Odnajdujemy LCDSDK_3.04.143.zip. Do katalogu winuae-base/logitechlcd wypakowujemy lglcd.h i lglcd.lib. Sterowniki możemy odinstalować. WinIO Do katalogu winuae-base/winio wypakowujemy zawartość katalogu Source. ParaPort Zawartość pliku nagłówkowego zapisujemy do winuae-base/paraport/paraport.h (najlepiej skopiować go ze źródeł strony). wnaspi32 Zapisuje do winuae-base/wnaspi32/wnaspi32.h enet Wypakowujemy do katalogu winuae-base/enet.
Do katalogu winuae-base/winuae/od-win32/winuae_msvc10/ kopiujemy plik solucji z repozytorium GIT. Otwieramy solucje. Usuwamy projekt unpackers. Usuwamy pliki *.obj z projektu winuae. Tworzymy w projekcie folder asm i dodajemy do niego pliki *.asm, które te obj-ty generowały. Zaznaczamy je wszystkie i wybieramy ich właściwości. Wybieramy wszystkie konfiguracje. Jako Item Type wybieramy Custom Build Tool. Naciskamy zastosuj. W Custom Build Tool ustawiamy: Command Line: nasm.exe -O1 -f win32 -Xvc -o "$(IntDir)%(Filename).obj" "%(RootDir)%(Directory)\%(Filename).asm" -w-orphan-labels Description: Compiling asm file %(Filename).asm Outputs: $(IntDir)%(Filename).obj;%(Outputs) Dla projektów build68k, genblitter, gencpu, gencomp dla Pre-Link-Event i Post-Build Event ujednolicamy wpisy dla wszystkich konfiguracji. Dla build68k zmieniamy by zamiast cpudefs.c generowany był plik cpudefs.cpp. Podobnie robimy dla projektu genblitter i genlinetoscr. Ustawiamy zależności pomiędzy projektami: winuae zależy od genblitter, gencpu, gencomp, genlinetoscr, prowizard oraz gencpu i gencomp zależą od build68k. We właściwościach projektu winuae do referencji dodajemy prowizard i ustawiamy Output File na domyślne dla wszystkich konfiguracji. Wybieramy konfiguracje Debug. W właściwościach solucji w Configuration Properties dla wszystkich konfiguracji włączamy w proces budowania tylko build68k, gencpu, gencomp, genblitter, genlinetoscr, prowizard, winuae. Budujemy build68k, genblitter - bez problemów. Budujemy gencomp, mamy błędy. W sysdeps.h dodajemy przed #include <tchar.h> wpis #include <windows.h>. Budujemy ponownie. Budujemy gencpu bez problemu. Budujemy genlinetoscr z problemami. Dla projektów build68k, gencpu, gencomp, genlinetoscr, genblitter dla wszystkich konfiguracji ustawiamy Output Directory i Intermediate Directory na $(Configuration)\, zaś Output File na $(OutDir)\..\$(TargetName)$(TargetExt). Budujemy genlinetoscr ponownie. Budujemy prowizard. Błędy. Kopiujemy z Release do Debug zawartość Additional Include Directories. Budujemy ponownie. Ujednolicamy dla wszystkich projektów zawartość Additional Include Directories. Z braku możliwości znalezienia lib-a do obsługi tabletu musiałem jego obsługę wyłączyć. W skórcie komentujemy #include <wintab.h>, #include <pktdef.h> i eliminujemy reszte błędów. Można także alternatywnie dodać nową definicje preprocesora do sysconfig.h. Usuwamy z Linker/Additional Dependencies wpis wintab32.lib dla wszystkich konfiguracji. Usuwamy z Delay Loaded Dlls wpis wintab32.dll dla wszystkich konfiguracji. Dla projektu winuae ustawiamy Output Directory i Intermediate Directory na $(Configuration)\ dla wszystkich konfiguracji. Ustawiamy Output File na domyślne dla wszystkich konfiguracji. Budujemy projekt winuae. Same błędy związane z brakiem plików nagłówkowych. Uzupełniamy Additional Include Directories o: ..\..\..\catweasel;..\..\..\enet\include;..\..\..\fdrawcmd;..\..\..\freetype\include;..\..\..\libpng;..\..\..\logitechlcd;..\..\..\openal;..\..\..\paraport;..\..\..\portaudio\include;..\..\..\tvicport;..\..\..\unrar;..\..\..\winio\Dll;..\..\..\winpcap\include;..\..\..\wnaspi32;..\..\..\zlib;%(AdditionalIncludeDirectories) Pozostały nam 2 błędy kompilacji: syntax error : identifier 'PARAPORT_INFO' d:\programowanie\c++\moje programy\winuae-base\winuae\od-win32\ioport.cpp Usuwamy: typedef BOOL (*getPortInfo)(HANDLE, PARAPORT_INFO*); static getPortInfo pp_getportinfo; pp_getportinfo = (getPortInfo)GetProcAddress (para, "getPortInfo"); Nic z tego nie korzysta. Co do drugiego błędu: 'Pa_OpenStream' : cannot convert parameter 7 from 'int (__cdecl *)(const void *,void *,unsigned long,const PaStreamCallbackTimeInfo *,PaStreamCallbackFlags,void *)' to 'PaStreamCallback (__stdcall *)' d:\programowanie\c++\moje programy\winuae-base\winuae\od-win32\sounddep\sound.cpp Uzupełniamy w portaudio.h deklarację PaStreamCallback o __cdecl. Budujemy ponownie winuae. Teraz to już tylko błędy linkowania. Ujednolicamy Linker/Additional Dependencies i Delay Loaded Dlls dla wszystkich konfiguracji projektu winuae. Uzupełniamy Additional Library Directories dla wszystkich konfiguracji o: ..\..\..\logitechlcd;..\..\..\winpcap\Lib;..\..\..\openal;..\..\..\freetype\lib Dodajemy do solucji WinIo.vcproj. Dodajemy do referencji winuae projekt WinIO. Usuwamy winio.lib z Linker/Additional Dependencies. Dla projektu WinIO ustawiamy Output Directory i Intermediate Directory na $(Configuration)\ dla wszystkich konfiguracji. Upewnijmy się w solucji że odpowiednie konfiguracje zostały wybrane. Bardzo często się zdarza, że np. dla konfiguracji solucji Release WinIO zostanie ustawiony na Debug. Budujemy WinIO. Budujemy ponownie winuae. Teraz zlib. Robimy dokładnie to co poprzednio w przypadku WinIO. Projekt to zlibstat.vcxproj. Budujemy zlibstat. Budujemy winuae. Teraz libpng. Edytujemy libpng.vcxproj. Usuwamy <import project="$(SolutionDir)\zlib.props">. Dodajemy projekt do solucji. Ustawiamy Output Directory i Intermediate Directory na $(Configuration)\ dla wszystkich konfiguracji. Target Name zaś na $(ProjectName) dla wszystkich konfiguracji. Ustawiamy Additional Include Directories na ..\..\..\..\zlib dla wszystkich konfiguracji. W właściwościach solucji ustawiamy Debug Library i Release Library dla odpowiednich konfiguracji. Dodajemy do referencji winuae projekt libpng. Usuwamy libpng.lib z Linker/Additional Dependencies. Budujemy libpng. Budujemy winuae. Czas na portaudio. Dodajemy do solucji portaudio.vcproj. Dodajemy do referencji winuae projekt portaudio. Ustawiamy Output Directory i Intermediate Directory na $(Configuration)\ dla wszystkich konfiguracji. Ustawiamy Output File na domyślne dla wszystkich konfiguracji. Usuwamy portaudio_x86.lib z Linker/Additional Dependencies dla wszystkich konfiguracji. Budujemy portaudio. Usuwamy z dysku jak i z projektu katalog ASIO. Budujemy. Usuwamy portaudio.def z projektu. Budujemy. Usuwamy dla wszystkich konfiguracji Module Definition File. Dodajmy do symboli preprocesora dla wszystkich konfiguracji PA_NO_ASIO. Zmieniamy w Delay Loaded Dlls portaudio_x86.dll na portaudio.dll. Budujemy. Uwaga: po zmianie nazwy dll-ki nie skorzystamy już z oryginalnej. Budujemy winuae. Czas na enet. Dodajemy do solucji enet.dsp. Dodajemy do referencji winuae projekt enet. Ustawiamy Output Directory i Intermediate Directory na $(Configuration)\ dla wszystkich konfiguracji. Ustawiamy Output File na domyślne dla wszystkich konfiguracji. Usuwamy enet.lib z Linker/Additional Dependencies dla wszystkich konfiguracji. Budujemy enet. Budujemy winuae. Usuwamy prowizard.lib z Linker/Additional Dependencies dla wszystkich konfiguracji. Budujemy winuae. Czas na błędy typu unresolved externals. Dla projektu enet, libpng, prowizard zmieniamy konwencje wywołań na stdcall dla wszystkich konfiguracji. Projekt portaudio nie eksportuje żadnych symboli. Dodajemy pliki nagłówkowe do projektu portaudio. Dodajemy na początek portaudio.h #ifdef _USRDLL #define DELC_EXTERN __declspec(dllexport) #else #define DELC_EXTERN __declspec(dllimport) #endif Dodajemy DELC_EXTERN do każdej funkcji w portaudio.h. Dodajemy _cdecl do każdej funkcji. Czyścimy dla wszystkich konfiguracji Linker/Advanced/Import Library. Otwieramy pcap.h, packet32.h, remote-ext.h i każdą funkcję raportowaną jako unresolved external dekorujemy __cdecl (a najlepiej wszystkie z tych plików). W tym momencie jedyne błędy linkera jakie zostały to multiply symbol define. Dla projektów enet, winuae, portaudio, prowizard, libpng, zlibstat, winio dla wszystkich konfiguracji poustawiajmy prawidłowo Runtime Library. Budujemy winuae. I mamy plik wykonywalny. Jeszcze jeśli idzie o Release. Dodajemy do projektu zlibstat do Pre_Build Event: cd ..\..\masmx86 bld_ml32.bat