![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 01:40 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [转帖]編譯你自己的MAME |
| 可打印版本 1,229 / 0 |
| 第1楼 Dark-Destroy | 发表于 2003-08-24 00:00 |
| 元老会员 发帖 3,551 积分 8,312 | |
|
[转帖]編譯你自己的MAME --------------------------------------------------------------------------------
作者: zchou (Nelson Chou) 看板: Emulator 標題: 編譯你自己的MAME(翻譯版) 時間: Tue Sep 8 18:16:50 1998 ┌─────────────────────────────────┐ │ │ │ 這個文件原來是一篇HTML,在DAVE 的MAME網頁上,不過我還是盡量改成 │ │ TXT形式,所以原來有些地方是屬於直接連結的,結果變成怪怪的樣子! │ │ 這篇HTML是以口語化的方式撰寫,所以翻譯時主要以意譯為主,整體的意 │ │ 思沒錯就直接跳過去,所以有些是和原文直譯是不太一樣! │ │ 原則上,還是應該以原文版為主,這篇只適合當作參考! │ │ 所有的檔案我都已抓下來,我會把所有檔案PACK成DJGPP.ZIP UPLOAD到 │ │ HWK大大的FTP,日期不定,請耐心等待! │ │ │ │ NELSON CHOU │ │ │ └─────────────────────────────────┘ 編譯你自己的MAME 一個編譯DOSMM.A.M.E V0.33 的非官方指引 Updated: September 5th , 1998 by Zan.(ben@netstra.com.au) 如果你要編譯新的BETA版(.34B1),到本頁非常下面的部份... ------------------------------------------------------------------------------- 1. 導論 好的.如果你像我一樣,你喜歡MAME並且想要對它的發展貢獻心力.你也知道MAME 編譯是很簡單的,以及編譯MAME是免費的?,是嗎?..不!!好的,在本頁中,你會學 到如何建立你自己的DOD MAME版本.只要你跟著做,你就能開始你夢想中的MAME DRIVER(ZIGZAG please!).我建立這一頁,因為我熟悉"C",但是從沒看過DJKPP, ALLEGRO或是SEAL.如果這聽起來和你一樣,你就出運了...請看下去.. MAME用絕佳且免費的DJGPP C/C++ 編譯器所編譯.(DJGPP是,一種Unix GNU GCC在DOS環境下的版本)繪圖,控制器及聲音函式庫為令人驚異的Allegro 及 SEAL (Synthetic Audio)函式庫所提供. 在你開始之前,我有一些想法...... 1.需要有超過10MB的壓縮檔(包含原始檔) 2.本頁上的DOS 指令會加深(譯注:這是原來網頁的作法,這裡改成用 " 框起來) ,如.. 鍵入"cd c:\mamesrc" 或 "pkunzip *.zip" 3.如果"cd c:\mamesrc" 或 "pkunzip *.zip" 看起來很陌生,表示你的DOS技能 可能稍微不好...不幸地,我假設你連DOS的一個小小的BIT都知道.....無論如 何,我會嘗試使得這些DOS 命令簡單些,所以看他一眼.你不能逃避任何事.. ..4.請EMAIL給我,並且只有給我,如果你遇到問題....不要在煩MAME小組了 ![]() ------------------------------------------------------------------------------- 2. 設定目錄及取得PKUNZIP 在這指引中,我會告訴你去做什麼及去哪裡做...所以,你必須要有這對目錄去設 定在你的機器上以和我所使用的相同的名稱這保證當我說"change to C:\DJGPP" ,你能確實的設定它!建立這兩個目錄: C:\DJGPP\ C:\MAMESRC\ 你必須要有PKUNZIP FOR DOS 在你的機器上.如果你沒有,到這 http://seagate.cns.net.au/~ben/emu/pkunzip.exe 如果你想要檢查看看,到DOS命令列,鍵入"PKUNZIP".如果你得到'Bad command or file name' ,表示沒有正確地設定. 注意:如果你認為我選的名稱很蠢並且想用其他的,更有特色的,或者你想要在不 同的磁碟機上工作(如,不是 C:\)這很好並且也會運作的很好.很不幸的,自己吃 自己吧....,因為從現在開始,我將只參考這兩個以上面的名稱為名稱的目錄,並 且我也假設PKUNZIP正在運作! ![]() ------------------------------------------------------------------------------- 3.收集所有必要的材料 (a)下載及解壓縮MAME原始程式碼 為了編譯MAME,明顯的,你將需要MAME原始程式碼.下載它到稱為C:\MAMESRC\的目 錄. 因為這裡我沒有提供它,你將需要從美妙的Daves video games classics (http://www.davesclassics.com)找到它.為了舒服起見,這裡有直接的連結-現 在版本是0.33(2MB,http://www.davesclassics.com/arcade/Emulators/Multi/mame033s.zip). 如果你認為我不該連結這個檔案,EMAIL給我並且提議把它放在主機 ![]() 現在,為了解壓縮這原始檔,變更到那個目錄(C:\MAMESRC\)並且鍵入: "pkunzip -d mame033s.zip "這個'-d'非常重要!它會保留所有MAME的子目錄. 注意:我現在正假設你有MAME原始程式碼在C:\MAMESRC\中.如果你決定使用另一 個目錄,自己去做! (b)下載及解壓縮那些為了編譯MAME的檔案 為了編譯MAME,你將需要下載下面的檔案DJGPP, Allegro, Seal.下載所有的檔 案到C:\DJGPP\,但是還"不要"解壓縮它們....你可以選擇任何你要的目錄,但是 再一次提醒,如果你這樣做的話就自己處理! ┌──────┬────────────────────┬───┐ │gcc281b.zip │DJGPP Compiler │ 1.3MB│ ├──────┼────────────────────┼───┤ │bnu281b.zip │DJGPP Assembler - Linker │ 1.8MB│ ├──────┼────────────────────┼───┤ │djdev201.zip│DJGPP Development Kit │ 1.5MB│ ├──────┼────────────────────┼───┤ │mak375b.zip │DJGPP Make(Processes MAKE Files) │ 200KB│ ├──────┼────────────────────┼───┤ │txi390b.zip │DIGPP Info File Viewer │ 450KB│ ├──────┼────────────────────┼───┤ │csdpmi3b.zip│DPMI Server │ 40KB │ ├──────┼────────────────────┼───┤ │alleg30.zip │ALLEGRO 3 │ 1.2MB│ ├──────┼────────────────────┼───┤ │seal103.zip │SEAL AUDIO LIBRARY │ 500KB│ └──────┴────────────────────┴───┘ ┌──────┬───────────────────────────┬───┐ │nasmw.zip │NASMw-097 NETWIDE ASSEMBLER-only to include ASM cores │ 94KB │ └──────┴───────────────────────────┴───┘ (files : ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gcc281b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bnu281b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2/djdev201.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/mak375b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/txi390b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/csdpmi3b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2tk/allegro/alleg30.zip http://www.egerter.com/seal/seal103.zip http://seagate.cns.net.au/~ben/emu/nasmw.zip ) 為了解壓縮這些用來編譯MAME的檔案,變更目錄到C:\DJGPP\,你剛剛下載所有那 些編譯器的檔案的目錄,並且解壓縮.... 鍵入: "pkunzip -d *.zip " "-d"非常重要.....它保證保留了所有原來的目錄結構.當你做完之後,你的DJGPP 目錄開始出現了. ![]() (c)什麼是NASM?? ㄜ,上面連結到NASM(assembler)是離線的,因為MAME V33沒還擁有ASM核心.新 BETA版(34B1)引入Neil Bradley的ASM core,不過內定值還是關閉.所以,如果你 想要使用ASM核心,去取得nasmw.zip (94kB).你只需要這個,如果你需要加入ASM 核心的話.這個檔案最好解壓縮及置於D:\DJGPP\BIN or C:\MAKESRC\目錄中.但 是可以在你的檔案路徑中任意位置.如果覺得這很困擾你,不要下載NASMW - 你 『不是』十分『需要』它 按下這裡(FAQ's,compilemamefaq.html)學習如何引入ASM核心! 因為原始程式碼,那需要超過10MB.如果你對上面的所有材料有興趣,額外的資訊 可以在下面的網址找到.去看看它們! THE DJGPP Web site(http://www.delorie.com/djgpp/) THE ALLEGRO Web site(http://www.talula.demon.co.uk/allegro/) SEAL SDK Web site(http://www.egerter.com/seal/) NASM home page(http://www.web-sites.co.uk/nasm) ------------------------------------------------------------------------------- 4.修改AUTOEXEC.BAT檔案 當DJGPP運作時,它需要知道每件事在哪裡.你將需要正確地設定你的DOS環境參 數為了使它運作.所以,你必須手動變更這兩個地方在你的autoexec.bat檔案. 如果你為了預防萬一的話,請作一個你的autoexec.bat的備份檔案,在你開始之 前.你可以這樣做:變更到根目錄(C:\)然後鍵入"copy autoexec.bat autoexec.bak" 這樣子,如果有任何有問題時,就可以從舊檔案回復. 無論如何,為了編輯你的autoexec.bat檔案,變更到根目錄,然後 鍵入 "edit autoexec.bat" 這將會帶你進入DOS EDITOR的藍色螢幕(或者你可以使用任何你喜歡的文字編輯 器).查看位於這個檔案某處的你的PATH參數.在這行結尾,加上"C:\DJGPP\BIN" (包含分號 ; 在這個陳述之前,如果在你的PATH參數的結尾沒有已經存在一個分 號的話.) 所以,你的PATH參數應該看起來像這樣: PATH=...........................;C:\DJGPP\BIN 最重要的事是有";C:\DJGPP\BIN"在結尾. 當你完成這件事之後,你還得加入下面這行在你的autoexec.bat檔案(與你已經 開啟的同一個)的某處: "SET DJGPP=C:\DJGPP\DJGPP.ENV" 當你完成這些事,儲存檔案及離開.你將需要REBOOT你的電腦或到DOS命令列在根 目錄中直接鍵入"autoexec",以使電腦能讀入你的新變更並且他們將有作用. 為了檢查所有事正常,在DOS命令列,鍵入:"set"及按下.然後,你應該看 到PATH=.....C:\DJGPP\BIN.如果你沒看到這行在任何地方,它將不會運作.你也 應該看到DJGPP=C:\DJGPP\DJGPP.ENV.一樣.如果你沒看到這行在任何地方,它將 不會運作. ------------------------------------------------------------------------------- 5. 取得ALLEGRO WIP及升級它 ALLEGRO近來為了支援某些東東而升級了,像sidewinder搖桿.它像進行中的工作 (Work in progress ,WIP)般的被參考以及能從你已經下載的部份升級!這就是 為什麼它在這裡,及沒有在上一頁中 所以,你需要升級ALLEGRO在你編譯MAME之前.首先,下載這兩個檔案到C:\DJGPP目錄中. ┌──────┬───────────────────────┬───┐ │difmay30.zip│- The allegro library WIP update │ 241KB│ ├──────┼───────────────────────┼───┤ │pat25b.zip │DJGPP patching program version .25 │ 92KB│ └──────┴───────────────────────┴───┘ (檔案位置: http://www.talula.demon.co.uk/allegro/difmay30.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/pat25b.zip ) 下一步,你需要一次一個地解壓縮這兩個檔案(再用"不要"unzip *.zip!)確定你 保留了ZIP檔中的目錄結構("-d"在PKUNZIP中 . 也請確定你在C:\DJGPP目錄中,在你作這件事之前.... ![]() 鍵入: "pkunzip -d difmay30.zip" 你"會"得到一個警告說keyboard.dat已經存在.按下"Y"繼續,因為你想更新它! 接下來鍵入: "pkunzip -d pat25b.zip" 為了升級ALLEGRO函式庫,請確定你在C:\DJGPP目錄中(你應該在那兒).我們要來 更新ALLEGRO函式庫了. 鍵入:"patch -p1 compiling allegro, please wait" 這會花相當的時間(在P233上要幾分鐘.).祈禱它不會掛了.當每件事都正常時, 你應該看到一堆文字在螢幕上.耐心一點.看到這個訊息就是結束了:" >All done. >To use Allegro, #include allegro.h and link with liballeg.a >Example command line: gcc foobar.c -o foobar.exe -lalleg >Enjoy! " 然後享受你要的 如果你沒有看到這樣的訊息,你事實上就是犯了錯誤,從最前面開始再試一次(對,幹掉整個DJGPP目錄).如果還有其他錯誤,EMAIL給我,並 且告訴我錯誤訊息是什麼. Whats happened? Well,所有ALLEGRO有用的材料都設定了(滑鼠,繪圖,鍵盤等 等..).自己動手做以節省下載時間 ![]() ------------------------------------------------------------------------------- 7. 移動上面的一些檔案 這裡,你將必須COPY 3個檔案到其他地方以使MAME能成功地編譯.你所要做的是 到C:\djgpp\目錄並且鍵入: "COPY C:\DJGPP\AUDIO\LIB\DOS\audiodjf.a C:\DJGPP\LIB\" and "COPY C:\DJGPP\AUDIO\INCLUDE\audio.h C:\DJGPP\INCLUDE\" and "COPY C:\MAMESRC\allegro.h C:\DJGPP\INCLUDE\" 最後一步很重要,因為MAME使用新的allegro.h檔案.MAME小組改變了allegro.h 檔案,所以你需要以MAME版的allegro.h檔案覆蓋調原來的!所以當你得到 allegro.h已經存在的訊息,你需要按下"Y"使新檔案在那兒! 移動這3個檔案非常重要,因為如果不做的話,MAME將"不會"編譯! ------------------------------------------------------------------------------- 8. 建立MAME OBJECT檔案目錄 變更目錄到你的MAMESRC目錄(C:\MAMESRC 如果你跟著這些指令執行的話.) 然後,鍵入: "make makedir" 執行時,你的螢幕應該看到有些東東,像(不是完全一樣,我知道,不過滿像的 ![]() ): mkdir obj Directory already exists mkdir obj mkdir obj\Z80 mkdir obj\M6502 mkdir obj\I86 mkdir obj\I8039 etc........... Directory already exists 這些步驟做的事是建立MAME OBJECT檔案在編譯程序時出現的目錄.有一個目錄 叫"obj",你可以在你的MAME原始檔目錄中找到.注意:這個步驟只需在第一次編 譯MAME時需要. ------------------------------------------------------------------------------- 9. 編譯MAME !!!!!!!!! 如果你跟著上面的每一步驟執行,並且也使用所有正確的名稱,你應該還在你的 MAMESRC目錄.(如果不是,到那裡去,現在!) 鍵入: "make" 就是它.你的螢幕應該看起來這樣,當你也完整的製造了ALLEGRO函式庫.這會花 相當的時間在我的PC上..當它完成後(假設沒有任何錯誤產生),絕對在你回到 DOS命令列時看不到任何東東,不過如果到MAMESRC目錄下,現在你應該看到剛剛 你完成編譯的"MAME.EXE"檔案. ------------------------------------------------------------------------------- 10. 一般性的問題 ![]() 1.如果你正在使用視窗95DOS BOX,你應該可能得到這樣的訊息: Load error: no DPMI selectors make.exe: *** Error1 沒什麼.這個功能(BUG?)明顯的只在WINDOWS95 DOS BOX出現.再打一次"MAKE" 就會繼續下去了 ![]() 2.增加在MAME DRIVER LIST中看起來會導致這樣的錯誤在某些機器. gcc.exe: installation problem, cannot exec `d:/djgpp/bin/ld.exe': Argument list too long (E2BIG) make.exe: *** Error 1 一個可能的解決方式是移動你的DJGPP目錄到你的硬碟的根目錄.另一個選擇是 把你的MAME OBJ 目錄改名成'O'並且把在MAKEFILE中所有OBJ名稱都改成'O'. 我相信未來的版本會解決它. 我沒有實際上得到這個錯誤,但是有些人有. ------------------------------------------------------------------------------- 下一步呢? 看看原始檔.變更它.做一個DRIVER.打開除錯器功能.開啟並改善68k ASM核心以 NASM.增加程式碼的速度(抱歉 Brad,我知道你討厭那個 )以MAME來說,在你的前面有很大的開始.只是"不要"忘記那些程式碼是誰寫的.我做了這個網頁,以 使有更多人能盡可能的進入MAME計畫中.告訴我,如果這網頁幫助你! ------------------------------------------------------------------------------- 相關知識及連結. 1.非常感謝WorknMan(mailto:worknman@mastnet.net)及Darrin J. Redick. (mailto:dnr@copper.net)兩位.沒有你們的辛苦工作,我就沒辦法完成這個. 這個網址只加入DOS MAME33.需要變動一些地方,才能編譯MAME33B5,到他們的 網址(http://www.mastnet.net/~worknman/mame/) 2.經常觀看CYO的首頁(http://seagate.cns.net.au/~ben/emu/cyo.html)為了 編譯其他模擬器. 3.如果你對模擬很認真,你應該取得這3份無價的文件: a.'Converting Schematics to an Emulator'By DAN BORIS! (http://atarihq.com/danb/files/zarzon.txt) b.很長的等待'Understanding MAME drivers'Also by DAN BORIS!!(http://atarihq.com/danb/files/mamedrv1.txt) c.模擬器的偉大指引 - the 'Arcade Emulation How-To' guide!!(http://atarihq.com/danb/files/aehowto.zip!) ------------------------------------------------------------------------------- 想要編譯MAME 34B1? 好的,對我而言是個好消息.這個指引也能在34beta1運作.取得原始碼從這裡( (m34b1s.zip,http://www.davesclassics.com/mamepage.html).下載這個檔案 到C:\MAMESRC\並且以"-D"功能解壓縮.如果你還沒得到它,你需要 下載'allegro.h'(http://seagate.cns.net.au/~ben/emu/allegro.h)檔案.MAME 中的不含BETA的部份.把這個檔案直接存到C:\DJGPP\INCLUDE\目錄. |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |