・snes9x-1.5.1-srcフォルダを入れるまとめフォルダを作る(ここにzlibとlibpngとfmodとnasmのフォルダを突っ込むため)。
・zlibはソースをDLして解凍する。できたフォルダをzlibにリネームしてまとめフォルダに突っ込む。zlibフォルダ内のcrc32.cをemucrc32.cにリネームする。
・libpngはコンパイル済みバイナリをDLして解凍する。できたフォルダをlibpngにリネームしてまとめフォルダに突っ込む。ソリューションエクスプローラでlibPNGフォルダ内の*.cをプロジェクトから除外する。プロジェクトのプロパティで追加の依存ファイル一覧にあるlibpngmt.libをlibpng.libにリネームする。
・fmodはver.3系(ver.4系でのビルドは未確認)のコンパイル済みバイナリをDLして解凍する。できたフォルダの中のフォルダをfmodにリネームしてまとめフォルダに突っ込む。
・nasmはコンパイル済みバイナリをDLして解凍する。できたフォルダの中のフォルダをnasmにリネームしてまとめフォルダに突っ込む。nasmはプロジェクト中の*.asmのビルドに必要になる。後の*.asmのビルド設定との整合性のためこの通りに配置すること。
・プロジェクトのプロパティでDirectX SDKのIncludeとLibフォルダにパスを通す。
・プロジェクトのプロパティで、「リンク前のイベント」に次のコマンドを追加する。
pushd "$(SolutionDir)..\"
del "i386\*.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\2xsaimmx.asm" "-oi386\2xsaimmx.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\bilinear.asm" "-oi386\bilinear.obj"
rem "$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\c4.asm" "-oi386\c4.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2.asm" "-oi386\fxemu2.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2b.asm" "-oi386\fxemu2b.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2c.asm" "-oi386\fxemu2c.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxtable.asm" "-oi386\fxtable.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\sfxproc.asm" "-oi386\sfxproc.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\spc.asm" "-oi386\spc.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\zsnes.asm" "-oi386\zsnes.obj"
rem "$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\zsnesc4.asm" "-oi386\zsnesc4.obj"
popd
上記のコマンドに出てくる11個の*.objファイルをプロジェクトに追加する。ただしコマンドがコメントアウトされている2つ(c4.objとzsnesc4.obj)はビルドから除外しておくこと。
・SARマクロ(sar.h)が原因でコンパイラが死ぬので、このマクロを不使用にするためにport.hの277行のRIGHTSHIFT_IS_SARマクロ定義を未定義にする。
ここまでの手順でビルドが通る。
TODO:
・プリプロセッサZSNES_C4を有効にする時の設定