2019年11月2日 星期六

用樹莓派 (Raspberry Pi 4) 打造復古遊戲機


上篇文章提到我在老 iPad mini 1 上安裝遊戲模擬器的一些心得,雖然是滿足了我的掌機夢,但很多人早就那樣玩了,或者不喜歡玩復古遊戲,畢竟現代遊戲的畫面好太多了,又有隨拿隨玩的手遊,何必對過去念念不忘呢?[1] 如果你有以上的想法,這篇文章又要讓你失望了,因為我又在折騰復古遊戲機了。

三個月前我寫過一篇舊文 "Google Chromecast 使用體驗",起因是我想好好利用我房裡的大電視,而玩樹莓派就是第二步,加上我本來就想買樹莓派來做其他應用,一切也就理所當然了。這次就先分享最簡單的初級應用 [2]:自製樹莓派復古遊戲機。


為什麼用樹莓派?

一個很直觀的問題,為什麼要折騰樹莓派?要知道樹莓派是一個精簡的小電腦,系統也沒有內建,甚至連 CPU 都不是主流的 x86 架構,很多軟體都有相容性問題,為何要找自己麻煩?首先,絕不是為了省錢,我在新加坡的電子產品代理商 Cytron 買樹莓派 (4 GB RAM model),加上一些 (我認為) 必要的配件,如盒子、miniHDMI 轉接線及 USB-C 電源線,總和大約 122 新幣,折合台幣將近 2800 元,金額說小不小,如果要搞遊戲模擬器,隨便拿一個最舊的筆電接電視都可以,還不用花額外的錢咧!(別忘了,iPad 上的 Provenance 支援外部手把,再投個屏也能接大電視玩 ....)

真實原因是樹莓派的通用性,由於樹莓派的系統是安裝在記憶卡內隨插隨用,所以只要準備好不同用途的系統記憶卡,這台小電腦的功能就可以千變萬化,非常有趣且有用。另外一點是它的外型輕巧,適合安裝在任何地方,不像與客廳格格不入的筆電。


上面是我的開箱照片,可以看到樹莓派的電路板本體、收納盒及 USB Type C 的電源線。整體的做工比我想像中地好,收納盒的開孔也與所有 IO 接口完美契合。


遊戲機系統安裝

接下來就是準備一個 "專門" 的遊戲模擬器 "系統"。這個觀念對於一般電腦用戶來說是有點奇怪,模擬器不就是一個軟體,怎麼會說是系統呢?是的,你可以安裝一個泛用的作業系統,然後裝上一個模擬器軟體,可是這樣就必須要使用鍵鼠操控,而且支援 ARM CPU 的軟體並沒有想像中好找。另外,樹莓派有著超強的移動屬性,所以我更建議的是,專門買一塊小記憶卡 (我的只有 16 GB,這貨的價格應該不會肉疼吧 [3]),然後燒入一個純為遊戲模擬器優化的系統,這樣玩的時候可以全部使用手柄操作,像極了一般遊戲機,而玩完之後換成別的記憶卡,又可變成其他用途的電腦。

系統該怎麼選?我原先的首選是 RetroPie,可是它的最新版 (v4.5.1) 並沒有支援我的 Raspberry Pi 4 Model B。選擇樹莓派系統跟一般電腦的系統不同,型號不同就不行,只支援 Raspberry Pi 3 的系統在 Raspberry Pi 4 裡不只是功能有問題,而是根本不能開機 (我試過),原因是樹莓派各代之間硬體差異很大,除非系統開發者特別標明其支援度,不然就是完全不支援。因此,我找到另一個有支援的系統:Lakka (一兩個月前 Raspberry Pi 4 還未正式支援,我下載的是 Nightly 版),下載 img.gz 檔之後解壓縮成 img 檔,使用映像檔燒錄軟體 (例如 Etcher 或我的 Ez ImgBurn) 將系統燒進 Micro-SD 卡中,之後放入樹莓派的記憶卡槽並啟動開機,看到一朵小花就表示成功了。


進入系統後畫面如上,全程可使用遊戲手把操縱,缺點是介面沒有 RetroPie 那麼好看,但在 Lakka 對 Raspberry Pi 4 的正式版已經釋出的今天,RetroPie 依然還未更新,所以再好看也沒用,更何況 Lakka 也運行得很好啊~


把遊戲 ROM 灌入系統

我在網上找到的教學是使用 USB 隨身碟將 ROM 灌入 Lakka 系統,但是我不喜歡這個作法,所以我將樹莓派用網線與路由器相連,使其與我的電腦在同一網域下,再將其作為網路磁碟掛載 ( smb://lakka/ ) 在我的 Mac 裡:

Finder > Go > Connect to Server...

選擇 Guest 即可

進入 ROMs 目錄

不知道是不是因為我使用測試版系統的關係,我無法以註冊帳戶登入,所以都使用訪客帳戶 (Guest),或許正式版沒有這個問題。進入 ROMs 目錄之後可以自己創建資料夾將要放入的遊戲 ROM 分門別類:


導入遊戲 ROM 之後 Lakka 不會自動偵測到,此時有兩種方法可以開始玩遊戲:

1. 使用目錄掃描:在 Import Content 選單下使用 Scan Directory 功能,可在 ROMs 目錄下的指定目錄中掃描,這樣可以直接將遊戲匯入,之後在 Import Content 選單旁邊就會有對應的遊戲機圖示。這個方法最簡單直覺,可惜的是不見得所有檔案都能成功匯入。比如說某些遊戲機需要另外安裝 BIOS (下面會提到,但即使裝了 BIOS 其遊戲還是不能以此法匯入),或是 ROM 副檔名不被預設支援 (SNES 僅支援 *.sfc,*.smc 會匯入失敗),故要玩這些遊戲必須用第二種方式。


2. 直接載入檔案內容:在 Main Menu 選單下的 Load Content 可以直接載入遊戲 ROM,操作介面跟 Import Content 類似,但有時會要求使用者自行選擇模擬器的核心 (Core),選錯沒關係,選到可以玩為止就是了。


以上,其他我未提及的細節可以參考官方文檔


一些注意事項

1. 聲音輸出:由於聲音預設是從耳機孔輸出,而不是 HDMI,所以必須要調整 Audio 的設定 (預設是 null,我改成 default.CARD=ALSA,記得要重開機)。請注意樹莓派有兩個 micro HDMI 孔,我的經驗是只有其中一個能在 Lakka 裡輸出聲音,不知是不是測試版系統的問題,總之如果設定無效,換一個孔試試。


2. BIOS:根據官網的資料,有些遊戲機 (例如 Sega Genesis / Mega Drive) 要安裝 BIOS 才能用。官網給出非常詳盡的列表,以及 BIOS 檔必須嚴格遵守的檔名,但噁心的是官網沒有透漏去哪裡下載,或許這些檔案也有版權?!總而言之我在 Arichive.org 上面找到了:RetroArch BIOS Pack,解壓縮後將需要的 BIOS 丟進正確的目錄即可,比如說 Sega Genesis / Mega Drive 的 BIOS 檔就是放在 System 目錄下。有網友反應這些 BIOS 檔都太舊了,但我目前用起來還沒什麼問題。

3. 遊戲手把按鍵的重新映射:手把按鍵的位置有多重要我已經在 "在老 iPad mini 1 上玩復古老遊戲" 中提過,實體按鍵的體驗好很多,但若位置不對還是蛋疼,所以修改成舒服的按鍵配置非常重要。在遊戲運行中跳出遊戲畫面 (我用的是 PS4 的手把,此功能是按下中間的 PS 鍵 [4]) 可以看到一堆選單,找到 Controls 即可修改手把的設定,修改完可以儲存成 remap 檔,之後 Lakka 會自動載入 (也可以指定載入不同的 remap 檔,用 Load Remap File 選項即可)。自動載入常常會跳出失敗的訊息,但還是有載入,反正能玩就好。


4. 外接隨身碟輸入:如果使用外接隨身碟載入,磁碟會被掛載在 Storage 目錄下,要找比較麻煩,這部份請看國外網友的操作 (從 8:45 開始)

5. 介面的語言:系統介面的語言是可以改的 (Setting > User > Language),可惜的是繁體中文的支援度還是不好,一堆方框,簡體中文也一樣,也許正式版會改進吧?也許。


OK,以上就是我的體驗心得 (包括我踩過的坑),有問題或建議歡迎留言,多謝各位~


20191114 Update: 碰巧發現 11/7 在嘖嘖上有人發起一個懷舊盒子的眾籌方案,主要是賣機殼,成品就是我這遊戲機的豪華版。他使用 RetroPie 作為遊戲機系統,所以只能用 Raspberry Pi 3B,好處是比較便宜且發熱量小,但效能夠不夠其他的應用就不知道了 (我買的樹莓派 4B 有 4G RAM,他的樹莓派 3B 是 1 GB,玩玩模擬器是夠啦)。總之提供一下情報,有興趣的人可以去嘖嘖支持他。



附註
1. 我上週末去台南參觀了 "舊遊戲時代" 協辦的復古遊戲展 (IG 連結),雖然展出的內容嚴重不足,但看到不少中年人 (男女都有) 帶著自己的小孩一起玩復古遊戲,還是很溫馨的。
2. 下一篇樹莓派文章就會複雜很多,但用途更廣泛,先賣個關子。
3. 樹莓派對於記憶卡也有相容性要求,詳情可以看 RPi SD cards 網頁的清單,或是參考 "Best SD cards for Raspberry Pi 4 in 2019" 的推薦。
4. 說來有趣,我家裡從來都沒有 PS 4,但我當年卻因為要用 OpenEmu 打電動而買了 PS 4 手把 ....

22 則留言:

  1. 有人呀,不時會上來看看,有趣!

    回覆刪除
    回覆
    1. 感謝支持。

      啊 .... 我要澄清一下,這位匿名的朋友不是我本人,也不是我請來的托喔~

      刪除
  2. 挺好的我也来了~

    回覆刪除
  3. 哈,不好意思,因為是用公司帳號,所以只好匿名留言了
    絕對不是托!

    回覆刪除
  4. 我不知到按了什麼,設定的齒輪不見了,請問版大能否教學呢?

    回覆刪除
    回覆
    1. 這就奇了,我也沒有辦法,只能重開機試試了。

      重開機可以用 "Restart RetroArch" 或者 "Reboot",前者只重啟模擬器,所以比較快。

      刪除
    2. 應該是不小心開啟了 kiosk mode

      刪除
  5. 照著版大的教學後,我的樹梅派4已可以正常執行模擬器了,目前遇到兩個問題,懇請版大撥空教學,藍芽無法連接及遊戲沒有聲音,拜託拜託

    回覆刪除
    回覆
    1. 聲音的設定我在文章中有提到,我一開始也是沒聲音,調過就有了,如果那個選項不行,就換下一個試試。參考官方文件:https://www.lakka.tv/doc/audio-settings/

      藍芽部分我沒使用過,找了一下官方文件,以 DualShock 為例:https://www.lakka.tv/doc/wireless-dualshock/
      總之就是要自己設定一下。

      刪除
  6. 我也在看阿 怎麼會沒人~

    回覆刪除
    回覆
    1. 多謝支持。

      最近剛從新加坡回國,又要準備下一份工作的事,實在沒時間更新呀~ Orz

      刪除
  7. HELLO,謝謝分享!! 我是使用WinSCP(root/root)將ROMs複製到/storage/roms/downloads,要先做WinSCP設定,否則中文檔名變亂碼(https://fryfishtw.pixnet.net/blog/post/24381415)

    回覆刪除
  8. 最近也是迷上pi想用他做許多應用,但自己軟體方面也還沒那麼強,所以到處爬文,也謝謝你的分享

    回覆刪除
  9. 實用,感謝分享!

    回覆刪除