給那些懷舊的遊戲骨灰粉絲們:自製一台樹莓派街機
我們是在B+型號出來以前完成的這個項目。它應該也可以同樣工作在更新的主板上,你應該不用一個帶電源的USB Hub也可以
聲明
強調一下,我們搗騰的電子器件可能會讓你受到電擊。請確保你做的任何改動都是有資質的電子工程師幫你檢查過的。我們也不會深入討論如何獲取遊戲,但是有很多合法的資源,例如基於MAME模擬器的老遊戲,以及較新的商業遊戲。
第一步:街機機櫃
街機機櫃本身就是最大的挑戰。我們在eBay上淘了個二手的90年代初的雙人泡泡龍遊戲機。然後花了£220裝在一台旅行車後面送過來。類似這種機櫃的價格並不確定。我們看到過很多在£100以內的。而另一方面,還有很多人願意花數千塊錢去買原版側面貼紙完整的機器。
決定買一個街機機櫃,主要有兩個考慮。第一個是它的體積:這東西又大又重。又佔地方,而且需要至少兩個人才能搬動。如果你不缺錢的話,還可以買DIY機櫃或者全新的小一點的,例如適合擺在桌子上的那種。然後,酒櫃也能很合適。
這種機櫃可能很便宜,但是他們都很重。不要一個人去搬。一些更古老的機器可能還會需要一點小關懷,例如重新噴個漆以及一些修理工作
除了獲得更加真實的遊戲體驗以外,購買原版的街機機櫃的一個絕佳理由是可以使用原版的控制器。從eBay上買到的大多數機器都支持兩個人同時玩,有兩個搖桿以及每個玩家各自的一些按鈕,再加上玩家一和玩家二的選擇按鈕。為了兼容更多遊戲,我們建議您找一台每個玩家都有6個按鍵的型號,這個是通用配置。也許你還想看看支持超過兩位玩家的控制台,或者有空間放其他遊戲控制器的,比如說街機軌跡球(類似瘋狂彈珠這種遊戲需要的),或者一個旋鈕(打磚塊)。這些待會都可以輕鬆裝上去,因為有現成的現代USB設備。
控制器是第二考慮的,而且我們認為是最重要的,因為要通過它把你的搖動和拍打轉變成遊戲里的動作。當你準備買一個機櫃時需要考慮一種叫JAMMA的東西,它是日本娛樂機械製造商協會(Japan Amusement Machinery Manufacturers Association)的縮寫。JAMMA是街機遊戲機里的行業標準,定義了包含遊戲晶元的電路板和遊戲控制器的連接方式,以及投幣機制。它是一個連接兩個玩家的搖桿和按鈕的所有線纜的介面電路,把它們統一到一個標準的連接頭。JAMMA就是這個連接頭的大小以及引腳定義,這就意味著不管你安裝的主板是什麼,按鈕和控制器都將會連接到相同功能介面,所以街機的主人只需要再更換下機柜上的外觀圖片,就可以招攬新玩家了。
但是首先,提醒一下:JAMMA連接頭上帶有12V電壓供電,通常由大多數街機里都有的電源模塊供給。為了避免意外短路或是不小心掉個螺絲刀什麼的造成損壞,我們完全切斷了這個供電。在本教程後面的任何階段,我們也不會用到這個連接頭上的任何電源腳。
第二步:J-PAC
有一點非常方便,你可以買到這樣一種設備,連接街機機櫃里的JAMMA接頭和電腦的USB埠,將機柜上的搖桿和按鍵動作都轉換成(可配置的)鍵盤命令,它們可以在Linux里用來控制任何想玩的遊戲。這個設備就叫J-Pac(www.ultimarc.com/jpac.html – 大概£54)。
它最大的特點不是它的連接性;而是它處理和轉換輸入信號的方式,因為它比標準的USB手柄強太多太多了。每一個輸入都有自己獨立的中斷,而且沒有限制同時按下或按住的按鈕或搖桿方向的數量。這對於類似街頭霸王的遊戲來說非常關鍵,因為他們依賴於同時迅速按下的組合鍵,而且用來對那些發飆後按下自己所有按鍵的不良對手發出致命一擊時也必不可少。許多其他控制器,特別是那些生成鍵盤輸入的,受到了他們所採用的USB控制器的同時六個輸入的限制,以及一堆的Alt,Shift和Ctrl鍵的特殊處理的限制。J-Pac還可以接入傾角感測器,甚至某些投幣裝置,不用預先配置就可以在Linux下工作了。
另外的選擇是一個類似的叫I-Pac的設備。它做了和J-Pac相同的事情,只不過不支持JAMMA接頭。這意味著你不能把JAMMA控制器接上去,但同時也就是說你可以設計你自己的控制器布局,再把每個控制接到I-Pac上去。這對第一個項目來說也許有點小難,但是這卻是許多街機迷們選擇的方式,特別是他們想設計一個支持四個玩家的控制板的時候,或者是一個整合許多不同類型控制的面板的時候。我們採用的方式並不是我們推薦必須要做的,我們改造了一個輸入有問題的二手X-Arcade Tankstick控制面板,換上了新的搖桿和按鈕,再接到新的JAMMA介面,這樣有一個非常好的地方就是可以用便宜的價格(£8)買到所有用到的線材包括電路板邊緣插頭。
上圖是我們已經裝到機柜上的J-Pac。右邊的藍色和紅色導線接到我們的機柜上額外的1號和2號玩家按鈕
不管你選擇的是I-Pac或是J-Pac,它們產生的按鍵都是MAME的默認值。也就是說運行模擬器之後不需要手動調整輸入。例如玩家1,會默認將鍵盤方向鍵映射成上下左右,以及將左邊的Ctrl,左邊的ALT,空格和左邊的Shift鍵映射到按鈕1-4。但是真正實用的功能是,對於我們來說,是雙鍵快捷方式。當按下並按住玩家1按鈕後,就可以通過把玩家1的搖桿拉到下的位置發出用來暫停遊戲的P按鍵,推到上的位置調整音量,以及推到右的位置來進入MAME自己的設置界面。這些特殊組合鍵設計的很巧妙,不會對正常玩遊戲帶來任何干擾,因為他們只有在按住玩家1按鈕後才會生效,然後可以讓你正在運行遊戲的時候也能做任何需要的事情。例如,你可以完全地重新配置MAME,使用它自己的菜單,在玩遊戲的時候改變輸入綁定和靈敏度。
最後,按住玩家1按鈕然後按下玩家2按鈕就可以退出MAME,如果你使用了啟動菜單或MAME管理器的話就很有用了,因為他們會自動啟動遊戲,然後你就可以用最快的速度開始玩另一個遊戲了。
對於顯示屏我們採取了比較保守的方式,拿掉了街機原裝的笨重的而且已經壞掉的CRT,換成一個低成本的LCD顯示器。這樣做有很多好處。首先,這個顯示器有HDMI介面,這樣他就可以輕易地直接連接到樹莓派或是現代的顯卡上。第二,你也不用去設定驅動街機屏幕所需要的低頻率刷新模式,也不需要驅動它的專用圖形硬體。第三,這也是最安全的方式,因為街機屏幕往往在機身背後沒有保護措施,讓很高的電壓離你的手只有幾英寸的距離。也不是說你完全不能用CRT,如果那就是你追求的體驗的話 – 這也是獲得所追求的遊戲體驗的最真實的方式,但是我們在軟體里充分細調了CRT模擬部分,我們對輸出已經很滿意了,而且不需要用那個古老的CRT更是讓我們高興。
你也許還需要考慮用一個老式的4:3長寬比的LCD,而不是那種寬屏的現代產品,因為4:3模式用來玩豎屏或橫屏的遊戲更實用。比如說玩豎屏的射擊遊戲,例如雷電,如果使用寬屏顯示器的話,會在屏幕兩邊都有一個黑條。這些黑條一般會用來顯示一些遊戲指引,或者你也可以把屏幕翻轉90度,這樣就可以用上每個像素了,但這卻不實用,除非你只玩豎屏遊戲或者有一個容易操作的旋轉支座。
裝載顯示屏也很重要。如果你拿掉了CRT的話,沒有現成的地方安裝LCD。我們的方式是買了一些中密度纖維板(MDF)並切割成適合原來擺放CRT的地方。固定以好,我們把一個便宜的VESA支座放在中間。VESA底座可以用來掛載大多數屏幕,大的或小的。最後,因為我們的機櫃前面有煙玻璃,我們必須保證亮度和對比度都設置的足夠高。
第三步:裝配
現在幾個硬體大件都選好了,而且也基本上確定了最終街機機櫃要擺放的地方,把這幾個配件裝到一起並沒有太大難度。我們安全地把機櫃後面的電源輸入部分拆開,然後在背後的空間接了一個符合插座。接在了電源開關之後的電線上。
幾乎所有的街機機櫃右上角都有個電源開關,但通常在機櫃靠下一點的地方有大量的導線鉸接在它上面,也就是說我們的設備可以使用普通的電源連接頭。我們的機柜上還有一個熒光管,用做機器上邊燈罩的背光,之前是直接連接到電源上的,我們可以用一個普通插頭讓它保持和電源連接。當你打開機柜上的電源開關的時候,電流會流入機櫃里的各個部件 - 你的樹莓派和顯示屏都會開機,所有一切就都準備好了。
J-Pac模塊直接插到JAMMA介面上,但你可能還需要一點手動調整。標準的JAMMA只支持每個玩家最多三個按鍵(儘管許多非正式的支持四個),而J-Pac可以支持六個。為了連接額外的按鈕,你需要把按鈕開關的一端接到J-Pac的GND上,另一端接到J-Pac板邊有螺絲固定的輸入上。它們被標記成1SW4,1SW5,1SW6,2SW4,2SW5和2SW6。J-Pac也有聲音的直通連接,但是我們發現雜音太多沒法用。改成把機柜上的喇叭連接到一個二手的SoundBlaster功放上,再接到樹莓派的音頻輸出埠。聲音不一定要純正,但音量一定要足夠大。
我們的樹莓派已經接到J-Pac左邊,也已經連接了顯示屏和USB hub
然後把J-Pac或I-Pac模塊通過PS2轉USB連接線接到你的PC或樹莓派,也可以直接接到PC的PS2介面。要用舊的PS2接頭的話額外還有個要求,你的電腦得足夠古老還有這個,但是我們測試發現用USB性能是一樣的。當然,這個不能用於不帶PS2的樹莓派,而且別忘了樹莓派也需要供電。我們一般建議使用一個帶電源的USB hub,因為沒有供電是樹莓派不工作最常見的錯誤。你還需要保證樹莓派的網路正常,要麼通過乙太網(也許使用一個藏到機櫃里的電力線適配器),或者通過無線USB設備。網路很關鍵是因為在樹莓派被藏到機櫃里後你還可以重新配置它,不用接鍵盤或滑鼠就可以讓你調整設置以及執行管理任務。
投幣裝置
在街機模擬社區里,讓投幣裝置工作在模擬器上工作就會和商業產品太接近了。這就意味著你有潛在的可能對使用你機器的人收取費用。這不僅僅只是不正當,考慮到運行在你自己街機上的那些遊戲的來源,這將會是非法的。這很顯然違背了模擬的精神。不過,我們和其他熱愛者覺得一個能工作的投幣裝置更進一步地靠近了街機的真實,而且值得付出努力來營造對那個過去街機的懷念。丟個10便士硬幣到投幣口然後再聽到機器發出增加點數的聲音,沒有什麼比得上這種感受了。
實際上難度也不大。取決於你街機上的投幣裝置,以及它如何發信號通知投了幾個幣。大多數投幣裝置分為兩個部分。較大的一部分是硬幣接收和驗證裝置。這是投幣過程的物理部分,用於檢測硬幣是否真實以及確定它的價值。這是通過一個遊戲點數邏輯電路板來實現的,通常用一個排線連接,上邊還帶有很多DIP開關。這些開關用來決定接受哪種硬幣,以及一個硬幣能產生多少點數。然後就是簡單地找到輸出開關,每個點數都會觸發它一次,然後把它接到JAMMA連接頭的投幣輸入上,或者直接接到J-Pac。我們的投幣裝置型號是Mars MS111,在90年代早期的英國很常見,網上有大量關於每個DIP開關作用的信息,也有如何重新編程式控制制器來接受新硬幣的方法。我們還能在這個裝置的12V上接個小燈用來照亮投幣孔。
第四步:軟體
MAME是這種規模項目唯一可行的模擬器,它如今支持運行在數不清的不同平台上的各種各樣的遊戲,從第一代街機到一些最近的機器。從這個項目中還孕育出了MESS,一個多模擬器的超級系統,針對的平台是80到90年代的家庭電腦以及電視遊戲機。
如何配置MAME本身都可以寫上六頁的文章了。它是一個複雜的,無序的,偉大的軟體程序,模擬了如此之多的CPU,音效卡,晶元,控制器以及那麼多的選項,就像MythTV,你都永遠不能真正配置好它。
但是也有個相對省事的方式,一個特別為樹莓派構建的版本。它叫PiMAME。它是一個可下載的發布版和腳本,基於Raspbian,這是樹莓派的默認發布版。它不僅僅會把MAME裝到樹莓派上(這很有用因為沒有哪個默認倉庫里有這個),還會安裝其他一些精選出來的模擬器,並通過一個前端來管理他們。MAME,舉個例子,是一個有數十個參數的命令行應用。但是PiMAME還有一個妙招 - 它安裝了一個簡單的網頁伺服器,可以在連接上網路後讓你通過瀏覽器來安裝新遊戲。這是一個很好的優點,因為把遊戲文件放到正確的目錄下是使用MAME的困難之一,這還能讓你連接到樹莓派的存儲設備得到最優使用。還有,PiMAME會通過用來安裝它的腳本更新自己,所以保持最新版本就太簡單了。目前來說這個非常有用,因為在編寫這個項目的時候,正好在0.8版這樣一個重大更新發布的時間點上。我們在三月份早期時發現有一些輕微的不穩定,但是我們確定在你讀到這篇文章的時候一切都會解決。
安裝PiMAME最好的方式就是先裝Raspbian。你可以通過NOOBS安裝,使用電腦上的圖形工具,或者通過dd命令把Raspbian的內容直接寫入到你的SD卡中。就像我們上個月的BrewPi教程里曾提到的,這個過程在之前已經被記錄過很多次,所以就不再浪費口水了。想簡單點就裝一下NOOBS,參照樹莓派網站上的指引。在裝好Raspbian並跑起來以後,請確保使用配置工具來釋放SD卡上的空間,以及確保系統已經更新到最新(sudo apt-get update; sudo apt-get upgrade)。然後再確保已經安裝好了git工具包。當前任意Raspbian版本都會自帶git,不過你仍然可以通過命令sudo apt-get install git檢查一下。
然後再在終端里輸入下面的命令把PiMAME安裝器從項目的GitHub倉庫克隆到本地:
git clone https://github.com/ssilverm/pimame_installer
之後,如果命令工作正常的話你應該能看到如下的反饋輸出:
Cloning into 『pimame_installer』...
remote: Reusing existing pack: 2306, done.
remote: Total 2306 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2306/2306), 4.61 MiB | 11 KiB/s, done.
Resolving deltas: 100% (823/823), done.
這個命令會創建一個叫『pimame_installer』的新目錄,然後下一步就是進入這個目錄再執行它裡面的腳本:
cd pimame_installer/
sudo ./install.sh
這個命令會安裝和配置很多軟體。所需的時間長短也取決於你的網際網路速度,因為需要下載大量的包。我們那個簡陋的樹莓派加15Mb網際網路連接用了差不多45分鐘來執行完這個腳本,在這之後你會收到重啟機器的提示。你現在可以安全的通過輸入sudo shutdown -r來重啟了,因為這個命令會自動處理剩下的SD卡寫入操作。
這就是安裝的全部事情了。在重啟樹莓派後,就會自動登錄,然後會出現PiMAME啟動菜單。在0.8版本里這是個非常漂亮的界面,有每個支持平台的圖片,還有紅色圖標提示已經安裝了多少個遊戲。現在應該可以用控制器來操作了。如果需要檢查控制器是否正確連接,可以用SSH連接到樹莓派然後檢查一下文件/dev/input/by-id/usb-UltimarcI-PACUltimarc_I-PAC-event-kbd是否存在。
默認的按鍵配置就可以讓你選擇要在你的街機上運行哪個模擬器。我們最感興趣的就是第一個,名字叫『AdvMAME』,不過你也許會很驚訝看到還有一個MAME可選的,MAME4ALL。MAME4ALL是特別為樹莓派構建的,使用了舊版的MAME源代碼,所以它所支持的ROMS的性能也是最佳的。這是很合理的,因為你的樹莓派不可能玩那些要求很高的遊戲,所以沒有理由苛求模擬器的沒必要的兼容性。現在剩下的事情就是找些遊戲裝到你的系統里(參考下面的方法),然後盡情享受吧!
via: http://www.linuxvoice.com/arcade-machine/
作者:Ben Everard 譯者:zpl1025 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive