紅白機手柄無段變速連發修改-使用Arduino Nano控制為例

Hits: 593

摘要

本文提出一個使用Arduino Nano開發板模擬紅白機遊戲手柄 A、B按鍵的無段控制連發改機實例,適用於99%動作遊戲的自動觸發時脈調整,改善玩家長時間快速點擊手柄A、B按鍵所造成手痠、抽筋等症狀,並可因應不同的遊戲特性,玩家可調整點擊速度,增加攻擊連續性,降低攻擊中斷失誤的機率。

可調整連續觸發速度

前言

拜電腦科技日新月異的進展,電腦或是嵌入式系統可以安裝對應的電視遊樂器模擬器即可以享受遊戲帶來的快感。

常見的遊戲機模擬器

但模擬器缺少硬體的事件觸發控制,模擬器所執行的遊戲控制反應都會呈現延遲狀態,專業玩家在遊戲機可以輕而易舉發出的絕招(按鍵組合密技)、超級瑪利兄弟2 一隻生命破關等情節,往往使用模擬器操作遊戲無法呈現過關快感,因此專業玩家還是會使用傳統的遊戲機進行遊戲PK大賽。

紅白機是一款家用遊戲機,以電視為螢幕的遊戲機,流行的1980~2000年間家喻戶曉電視遊樂器。紅白機是由任天堂公司所發行,讓人深刻著名的遊戲為超級瑪利歐系列。

紅白機 資料出處:維基百科

該年代的遊戲機記憶體(RAM)約莫2KBytes,遊戲容量(ROM)大多為256KBytes以下,因此遊戲類型多以動作、簡單為主,無法與現在的電腦、手機遊戲相比較。

動作類型的遊戲考驗玩家快速反應、手指連續點擊攻擊速度,常見遊戲大多需要連續點擊A、B按鈕,發射武器攻擊打倒敵人,著名的遊戲如1943、坦克大戰、魂斗羅、泡泡龍、雙截龍…等系列遊戲。

坊間常見的複刻版紅白機手把已經將A, B按鍵另外設計自動連發的 Turbo A, B,但是自動連發的速度不可調整,因此很難將所有的動作遊戲連續攻擊的動作發揮淋漓盡致,例如雙截龍2代的絕招密技,飛踢後的鐵膝蓋頂撞、飛踢後的上鉤拳等技能,需要精準速度配合才能觸發。

本次的實驗基於Arduino Nano 開發板,改裝複刻版紅白機手柄,玩家調整可變電阻旋鈕改變Turbo觸發的時間間隔,增加玩家攻擊的連續性以及威力。

實驗方法

準備一台複刻版紅白機拆解遊戲的手把,量測遊戲手把Turbo A, B按鍵的定義,透過示波器測量,Turbo發出的頻率大約為90Hz。

複刻紅白機手把Turbo 觸發測試波形

Turbo觸發頻率90Hz遠高於人類手指觸發的頻率(以小編自我感覺良好,快速點擊頻率也才7~10Hz),為何Turbo的觸發頻率要設定為90Hz真的不得而知,合理的推估應該是想要滿足大多遊戲Turbo 連發的攻擊時間間隔,但是這個頻率無法滿足雙截龍系列或是北斗神拳等遊戲的連續攻擊間隔,大大降低遊戲殺敵的痛快感。

心想快速結案打算利用眾所皆知的NE555計時器實作一個可調整的頻率的方波函數。NE555實作之後效果不如預期,可改變的頻率範圍有限遊戲測試結果不佳,因此NE555方案宣告失敗。

使用NE555計時器實作一個可調整觸發訊號源

既然NE555實作測試效果不佳,而且一堆線路要安裝至遊戲手把內,恐怕體積未必能夠縮小,因此改用Arduino Nano開發板。

Arduino Nano要做到可調整頻率方波輸出,簡直是易如反掌,可謂用牛刀殺雞 。粗估使用NE555的配套與 Arduino Nano相比較,價格相差不遠,但是Arduino Nano可以大大降低線路的安裝,決定就採用Arduino Nano方案。

本次的Arduino的控制重點提供一個輸入裝置供玩家設定觸發的頻率,提供一個輸出狀態供玩家體驗頻率的快慢感覺,因此定義以下輸出入裝置:

  • 輸入裝置:使用常見的可變電阻,玩家調整可變電阻改變觸發手柄的頻率。
  • 輸出裝置:Arduino Nano開發版預設一個D13狀態燈,利用D13狀態燈的閃爍表示觸發頻率的狀態,狀態燈與實際的觸發頻率為1比1表示。

完成上述的功能定義開始規畫電路圖以及模擬測試,透過Analog A2取得調整值,直接輸出D12訊號與D13狀態指示燈,如下圖。

實作電路圖

本次的設計重點去除使用delay(),delay()會嚴重干擾玩家調整可變電阻的效果延遲,因此會發生OverAct 過度行為(未能精準掌握調整輸入與輸出頻率反應的時差),因此程式的設計上會利用loop事件迴圈計算頻率目標值的控制,即時取得可變電阻調整值與改變輸出方波狀態。

手柄改裝

Arduino電路模擬測試功能無誤,接著進行實體紅白機手炳的改裝

  • 1. 切斷原本Turbo的訊號源,將Arduino的輸出訊號取代切斷的訊號線路。
  • 2. 取得+5V VCC與GND供電腳位。
  • 3. 塑膠外殼打孔與Arduino安裝。
搭接 Turbo、VCC、GND訊號腳位
固定Arduino Nano 控制器

結論

本文基於Arduino Nano實作一個玩家調整輸出觸發頻率的控制裝置,可調整紅白機手炳連續觸發Turbo A, B按鍵速度,特點:

  • 本控制裝置的調整控制與輸出反應非常迅速、低延遲。
  • 可調整連發速度適用於99%的動作遊戲,玩家充分感受遊戲帶來的效果。
調整觸發頻率,取得最佳的攻擊效果
調整最佳的攻擊模式

本裝置未來發展可以整合文字顯示器、組合密技等,讓玩家能夠更短的速度提升遊戲等級或是破關。

在〈紅白機手柄無段變速連發修改-使用Arduino Nano控制為例〉中有 2 則留言

  1. 你好想請問一下

    如果是像是一般的大型格鬥搖桿
    想要安裝連發的話該怎麼裝呢?
    比如說搖桿有個A鈕
    我把A鈕另外拉一份出來弄成連發
    就會有兩個按鈕 一個是普通A鈕 一個是連發A鈕這樣
    而不是去切換該按鈕的連發與否
    這樣的話該怎麼製作呢?

    • 每一家的搖桿控制器設計並非通用型,並無一個修改標準,需要測試電路後才能知道如何修改。若您有此需求,可以提供搖桿進行初步測試。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *