任天堂的迷你紅白機已經陸續出貨了,到處都有開箱文甚至拆解文,價格也隨著話題炒作水漲船高,其內建30款遊戲並沒有使用卡帶,而是內建在記憶體中的rom,以模擬器的方式來運作遊戲,而其中Reset按鈕則改為快速儲存兼返回首頁的功能。事實上樹莓派的RetroPie復古派其實都是類似的模式,甚至搭配GPIO也可以來製作一個關閉遊戲返回首頁的硬體按鈕。

由於RetroPie可不像電腦Windows系統一樣,可以直接按右上角的叉叉X,或者按alt+F4來關閉視窗,所以內建的RetroArch的LR系列模擬器,就預設了一組熱鍵Select+Start,可以直接關掉遊戲回到ES首頁中;如果你只是玩LR系列的模擬器,如lr-mame2003或lr-ppsspp、lr-nestopia、lr-snes9x-next等,那熱鍵已經很方便了!,但其他模擬器平台,如DOSBox、Mupen64plus、DGen、PPSSPP、MAME4ALL、AdvanceMAME等其他非LR系列的模擬器,就不適用於RetroArch的的熱鍵,此時要回到ES系統首頁,就顯得相當的麻煩。

本篇將透過GPIO結合紅白機的硬體RESET按鍵,讓RetroPie擁有一個可以關閉遊戲返回ES首頁的實體功能按鍵,使用成果如以下影片,並提供簡易教學供大家參考。

參考來源:
Emulator Exit button GPIO
Adding a Shutdown Button to the Raspberry Pi B+
Retro Gaming with Raspberry Pi
Finally set up Retropie, complete with a GPIO Reset button
How can I add an On-Off switch to my Raspberry Pi 2

 

改裝紅白機的RESET按鍵至GPIO測試影片

 


 

以下為簡易教學

事前準備

1.一個無段式的按鈕
2.杜邦線或其他普通電線
3.SSH軟體及已連網的樹莓派+RetroPie
4.或者接上鍵盤的樹莓派+RetroPie

硬體按鍵接法教學

1.將電線接上無段式的開關,共兩條
2.將兩條線的另一頭接上GPIO
3.本教學範例使用接腳為37PIN跟39PIN,各別代表GPIO26及GROUND接地線

GPIO詳圖

軟體設定教學

1.使用SSH連至RetroPie或直接使用鍵盤,並進入命令列模式

2.建立指令檔

sudo mkdir Scripts
cd Scripts
sudo touch ExitEmu.py

3.用編輯器開啟指令檔

sudo nano ExitEmu.py

4.開始編輯指令檔內容

from time import sleep
import os
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

def exitEmulator(channel):
    print('exitEmulator')
    os.system('killall retroarch')
    pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]

    for pid in pids:
        try:
            commandpath = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
            if commandpath[0:24] == '/opt/retropie/emulators/':
                os.system('kill -QUIT %s' % pid)
                print('kill -QUIT %s' % pid)
        except IOError:
            continue
GPIO.add_event_detect(26, GPIO.RISING, callback=exitEmulator, bouncetime=500)

while True:
    sleep(10)

5.接著按Ctrl+X然後Y存檔離開

6.先直接執行指令來測試按鈕

sudo python ExitEmu.py

7.按下按鈕,畫面出現exitEmulator及retroarch共兩行字串代表指令成功了

8.接著按Ctrl+C可離開測試回到命令列

9.用編輯器開啟自動啟動程式

sudo nano /etc/rc.local

10.在exit 0的前一行加入

sudo python /home/pi/Scripts/ExitEmu.py &

11.接著按Ctrl+X然後Y存檔離開

12.最後重啟你的樹莓派

sudo reboot

13.完成,現在遊戲進行時,可以用快速按鈕直接離開遊戲回首頁囉!

 

已知缺點

1.暫時沒有自動快速儲存功能,無法完全跟迷你紅白機相仿。
2.有時按太多次,會導致RetroArch失效,重開機即可

 

 

以上簡易教學說明,若有問題歡迎到社團討論。

 


樹莓復古派facebook社團

小弟成立了樹莓復古派FB社團,針對RaspberryPi+RetroPie+RecalBox等組合而生的懷舊電玩手作復古專題社團,希望各路好手不吝加入;因殭屍帳號氾濫故採人工審核,多有不便請見諒

九五二七

作者/九五二七

愛漫畫愛遊戲愛上網愛星爺,小時摸到阿羅士與AppleII後註定宅一輩子,從紅白機到PS4,從386到Xeon,沒日沒夜的打電動;待過所有宅產業,從光華到NOVA,從遊戲到動漫,從攝影器材到網路電信,喜愛學習多於睡覺,無時無刻散發一股宅味,但號稱長的像梁朝偉XD
覺得這篇文章讚嗎?