小華的部落格: DosBox 模擬器 : 如何自己Compiler

搜尋此網誌

網頁

星期四, 9月 12, 2013

DosBox 模擬器 : 如何自己Compiler


        如果各位是BIOS工程師,但有時候可能有需要在 64 bit OS底下去執行Debug32.exe來看看一些組合語言的東西,但是卻發現在64 bit OS底下,Debug32.exe這隻程式是不能被執行的!

為了解決這個問題,我們通常都會去抓DosBox模擬器來使用,而這邊不是教大家去哪抓,而是跟大家說怎麼去自己抓回來Doxbox source code回來,然後使用VisualStudio 2010 自己Compiler 這個好用的工具。

首先,我們需要去抓Doxbox source code跟一些Library,而 DosBox source code 可以透過SVN抓,但是因為這個DosBox在編譯的過程中會去連結一些Library,所以就先就列出來那些會在設定環境時使用到的部分,要大家要自己先去下載:

Dosbox SVN: http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk (我是抓Revision 3833)
 
SDL2.0:  http://www.libsdl.org/download-2.0.php  (執行DosBox.exe 需要他的SDL2.DLL)
Libpng(libpng.lib): http://www.libpng.org/pub/png/libpng.html     (我是抓1.6.3)
Zlib(zlib.lib) : http://www.zlib.net/  (我是抓Zlib 1.2.8)
WinCurses(Curses.lib): http://www.baldwin.cx/~john/projects/WinCurses.html (Debug用)

 底下是我抓下來後解壓縮放到E:\DosBox的情況:


設定DosBox Compiler環境

1.我們要先產生zlib.lib給LibPng.lib使用,所以透過VS2010 compiler的方式就是先開啟VS2010 commnd prompt,然後鍵入:
 
   E:\DosBox\zlib-1.2.8:\>  Nmake /f win32\makefile.msc
 
在編譯結束後,你會看到zlib.lib被會放在Zlib-1.2.8目錄內。


2.由於DosBox還需要連結libpng.lib,所以我們透過VS2010方案去產生libpng.lib。
   所以在開啟VS2010方案檔案前,要先把預設的ZLIB路徑指向我們前面抓的那一個zlib-1.2.8,所以先去修改zlib.props這個檔案,如下圖:
 
接著開啟方案,然後整個Rebuild Solution.
 
3.當我們需要的LIB都準備好之後,就可以開啟DOSBOX方案
 
   E:\DosBox\visualc_net\dosbox.sln
 
4. 因為我們抓的LIB版本比原本設定的還新,所以要去設定方案內的專案屬性內的C++跟Linker的設定:
 
    a. Project Properties->C++->General->Additional Include Directories -->Edit
        ../include
        ../src/platform/visualc  
        ../SDL-1.2.15/include
        ../SDL2_net-2.0.0/include
        ../lpng163
         ../zlib-1.2.8
 
   b. Project Properties->Linker->Input->Additional Dependencies-->Edit
       opengl32.lib
       winmm.lib
       ../zlib-1.2.8/zlib.lib
       ../lpng163/projects/vstudio/Debug/libpng16.lib
       ../SDL2_net-2.0.0/lib/x86/SDL2_net.lib
       ../SDL-1.2.15/lib/x86/sdl.lib
       ../SDL-1.2.15/lib/x86/sdlmain.lib
       ../curses/curses.lib
       odbc32.lib
       odbccp32.lib
       ws2_32.lib
 
5. 如果環境都設定好了,你就可以開始Rebuild,接著等一下子後你就可以看到產生DosBox.exe 到你的Release 目錄內了.
 
6. 由於產生出來的DosBox.exe 並不能單獨直接執行,還需要一些DLL跟這個執行檔放在同一個目錄內,這些DLL檔案可以從前面抓的那些LIB目錄內找的到,所以我把它集中在同一個目錄內,如下圖所示:


7. 接著你只要執行dosbox.exe (滑鼠點兩下執行)就可以看到模擬器的畫面跑出來,然後我把我自己的E Driver掛在模擬器的K drive,之後就可以在模擬器內的K:\底下找到我放在E:\Debug32.exe並且執行成功:
 
 
我的DosBox Compiler環境是在 Window8 64 bit OS,然後使用 Visual Studio 2010的 32bit compiler,所以可以看到我是選Win32 Release build,設定的目錄都是指向x86而不是x64。

 
希望這邊文章對於想要自己Compiler DosBox但是又一直不成功的人有幫助 ^^
 
 
 
 
 
 


1 則留言:

匿名 提到...

寫的很不錯.

題外話:
能否寫個 Windows 版 UPX Compile 流程.
http://upx.sourceforge.net/

upx-3.91-src.tar.bz2 Source code (you will need UCL)
http://upx.sourceforge.net/download/upx-3.91-src.tar.bz2
http://www.oberhumer.com/opensource/ucl/

謝謝您.