任天堂的迷你紅白機已經陸續出貨了,到處都有開箱文甚至拆解文, 價格也隨著話題炒作水漲船高,其內建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首頁的實體功能按鍵, 使用成果如以下影片,並提供簡易教學供大家參考。
參考來源:
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測試影片
## 以下為簡易教學
事前準備
一個無段式的按鈕
杜邦線或其他普通電線
SSH軟體及已連網的樹莓派+RetroPie
或者接上鍵盤的樹莓派+RetroPie

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

GPIO詳圖

軟體設定教學
使用SSH連至RetroPie或直接使用鍵盤,並進入命令列模式
建立指令檔
sudo mkdir Scripts
cd Scripts
sudo touch ExitEmu.py
- 用編輯器開啟指令檔
sudo nano ExitEmu.py
- 開始編輯指令檔內容
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)
接著按 Ctrl + X 然後 Y 存檔離開
- 先直接執行指令來測試按鈕
sudo python ExitEmu.py
按下按鈕,畫面出現exitEmulator及retroarch共兩行字串代表指令成功了
接著按 Ctrl + C 可離開測試回到命令列
用編輯器開啟自動啟動程式
sudo nano /etc/rc.local
- 在exit 0的前一行加入
sudo python /home/pi/Scripts/ExitEmu.py &
接著按 Ctrl + X 然後 Y 存檔離開
最後重啟你的樹莓派
sudo reboot
- 完成,現在遊戲進行時,可以用快速按鈕直接離開遊戲回首頁囉!
已知缺點
暫時沒有自動快速儲存功能,無法完全跟迷你紅白機相仿。
有時按太多次,會導致RetroArch失效,重開機即可
以上簡易教學說明,若有問題歡迎討論。

