中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [转帖]編譯你自己的MAME 上一主题 | 下一主题
Dark-Destroy
元老会员





积分 8312
发帖 3551
注册 2003-3-22
状态 离线
『楼 主』:  [转帖]編譯你自己的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"及按下[ENTER].然後,你應該看
到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: *** [obj\.................] 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: *** [mame.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"功能解壓縮.如果你還沒得到它,你需要[按著shift + leftclick]
下載'allegro.h'(http://seagate.cns.net.au/~ben/emu/allegro.h)檔案.MAME
中的不含BETA的部份.把這個檔案直接存到C:\DJGPP\INCLUDE\目錄.



MSN:tiqit2@hotmail.com
2003-8-24 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: