天天看點

給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機

利用當代神奇裝置來重溫80年代的黃金記憶。

<a target="_blank"></a>

一台樹莓派以及一張4gbsd卡

一台支援hdmi的lcd顯示屏

遊戲搖桿或者...

一個jamma街機遊戲機外殼機箱

j-pac或者i-pac

80年代有太多難忘的記憶;冷戰結束,quatro碳酸飲料,korg polysix合成器,以及commodore 64家用電腦。但對于某些年輕人來說,這些都沒有街機遊戲機那樣有說服力,或那種甜蜜的叛逆。籠罩着煙味和此起彼伏的8比特音效,它們就是在擠出來的時間裡去探索的洞穴:50分錢和一個遊戲币能讓你消耗整個午餐時間,在這些遊戲上磨練着你的技能:小蜜蜂,城市大金剛,蜈蚣,行星射擊,吃豆小姐,火鳳凰,r-rype,大金剛,雷霆計劃,鐵手套,街頭霸王,超越賽車,防衛者争戰...噢,這個清單太長了。

這些遊戲,以及玩這些遊戲的街機機器,仍然像30年前那樣有吸引力。不像年輕時候那樣,現在可以不用裝一兜零錢就能玩了,最終讓你超越那些有錢的孩子以及他們無休止的‘繼續遊戲’。是以是時候打造一個你自己的基于linux的街機遊戲機了,然後挑戰一下過去的最高分。

我們将會包括所有的步驟,來将一個便宜的街機遊戲機器外殼變成一台linux驅動的多平台複古遊戲系統。但是這并不意味着你就一定要搭建一個同樣的系統。比如說,你可以放棄那個又大又重還有潛在緻癌性外殼的箱子本身,而是将内部控制核心裝進一個舊遊戲主機或同等大小的盒子裡。或者說,你也可以簡單地放棄小巧的樹莓派,而将系統的大腦換成一台更強勁的linux主機。舉個例子,它可以作為運作steamos的一個理想平台,用來玩那些更優秀的現代街機遊戲。

在之後的幾個頁面裡,我們将搭建一台基于樹莓派的街機遊戲機,你應該也能從其中發現很多點子應用到你自己的項目上,即使它們和我們這個項目不太一樣。然後因為我們是用無比強大的mame來做這件事情,你幾乎可以讓它在任意平台上運作。

給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機

我們是在b+型号出來以前完成的這個項目。它應該也可以同樣工作在更新的主機闆上,你應該不用一個帶電源的usb hub也可以

強調一下,我們搗騰的電子器件可能會讓你受到電擊。請確定你做的任何改動都是有資質的電子工程師幫你檢查過的。我們也不會深入讨論如何擷取遊戲,但是有很多合法的資源,例如基于mame模拟器的老遊戲,以及較新的商業遊戲。

街機機櫃本身就是最大的挑戰。我們在ebay上淘了個二手的90年代初的雙人泡泡龍遊戲機。然後花了£220裝在一台旅行車後面送過來。類似這種機櫃的價格并不确定。我們看到過很多在£100以内的。而另一方面,還有很多人願意花數千塊錢去買原版側面貼紙完整的機器。

決定買一個街機機櫃,主要有兩個考慮。第一個是它的體積:這東西又大又重。又占地方,而且需要至少兩個人才能搬動。如果你不缺錢的話,還可以買diy機櫃或者全新的小一點的,例如适合擺在桌子上的那種。然後,酒櫃也能很合适。

給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機

這種機櫃可能很便宜,但是他們都很重。不要一個人去搬。一些更古老的機器可能還會需要一點小關懷,例如重新噴個漆以及一些修理工作

除了獲得更加真實的遊戲體驗以外,購買原版的街機機櫃的一個絕佳理由是可以使用原版的控制器。從ebay上買到的大多數機器都支援兩個人同時玩,有兩個搖杆以及每個玩家各自的一些按鈕,再加上玩家一和玩家二的選擇按鈕。為了相容更多遊戲,我們建議您找一台每個玩家都有6個按鍵的型号,這個是通用配置。也許你還想看看支援超過兩位玩家的控制台,或者有空間放其他遊戲控制器的,比如說街機軌迹球(類似瘋狂彈珠這種遊戲需要的),或者一個旋鈕(打磚塊)。這些待會都可以輕松裝上去,因為有現成的現代usb裝置。

控制器是第二考慮的,而且我們認為是最重要的,因為要通過它把你的搖動和拍打轉變成遊戲裡的動作。當你準備買一個機櫃時需要考慮一種叫jamma的東西,它是日本娛樂機械制造商協會(japan amusement machinery manufacturers association)的縮寫。jamma是街機遊戲機裡的行業标準,定義了包含遊戲晶片的電路闆和遊戲控制器的連接配接方式,以及投币機制。它是一個連接配接兩個玩家的搖杆和按鈕的所有線纜的接口電路,把它們統一到一個标準的連接配接頭。jamma就是這個連接配接頭的大小以及引腳定義,這就意味着不管你安裝的主機闆是什麼,按鈕和控制器都将會連接配接到相同功能接口,是以街機的主人隻需要再更換下機櫃上的外觀圖檔,就可以招攬新玩家了。

但是首先,提醒一下:jamma連接配接頭上帶有12v電壓供電,通常由大多數街機裡都有的電源子產品供給。為了避免意外短路或是不小心掉個螺絲刀什麼的造成損壞,我們完全切斷了這個供電。在本教程後面的任何階段,我們也不會用到這個連接配接頭上的任何電源腳。

給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機

它最大的特點不是它的連接配接性;而是它處理和轉換輸入信号的方式,因為它比标準的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裝置。網絡很關鍵是因為在樹莓派被藏到機櫃裡後你還可以重新配置它,不用接鍵盤或滑鼠就可以讓你調整設定以及執行管理任務。

<a></a> 在街機模拟社群裡,讓投币裝置工作在模拟器上工作就會和商業産品太接近了。這就意味着你有潛在的可能對使用你機器的人收取費用。這不僅僅隻是不正當,考慮到運作在你自己街機上的那些遊戲的來源,這将會是非法的。這很顯然違背了模拟的精神。不過,我們和其他熱愛者覺得一個能工作的投币裝置更進一步地靠近了街機的真實,而且值得付出努力來營造對那個過去街機的懷念。丢個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的性能也是最佳的。這是很合理的,因為你的樹莓派不可能玩那些要求很高的遊戲,是以沒有理由苛求模拟器的沒必要的相容性。現在剩下的事情就是找些遊戲裝到你的系統裡(參考下面的方法),然後盡情享受吧!

給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機給那些懷舊的遊戲骨灰粉絲們:自制一台樹莓派街機

原文釋出時間:2014-11-13

本文來自雲栖合作夥伴“linux中國”

繼續閱讀