FC遊戲機手柄工作原理 ?
12-30
FC手柄,乃至絕大多數遊戲機手柄基本都是串列協議的。樓上提到的開關式並行協議按鍵一般在JAMMA規格的街機上最常見。至於為什麼這樣用,後面會解釋一下。如果你能理解一點簡單的時序的話,看下面時序圖就能理解FC手柄是如何工作的了。(為了便於理解,我們只簡單講一下時序,不擴展講硬體,用詞會盡量簡單化。~~~~= ̄ω ̄=)首先我們看下FC手柄的幾根線。正規的官方FC或者NES手柄都是5根線,有些組裝機手柄插口有9孔15孔等,其實手柄有用的就5個。
5根信號線,不同的文檔里命名會有一些差別。
VCC = 5V供電GND = 地線LATCH = 鎖存信號,由主機發送CLOCK = 時鐘信號,有些文檔會叫PULSE,由主機發送DATA = 串列數據線 低電平有效。由手柄上4021這顆晶元編碼輸出(組裝手柄都集成封裝在黑色牛屎塊里了)除去供電的的VCC和GND,真正用來決定手柄按鍵信號的就3根線。先普及個基礎知識。日版美版FC主機均為NTSC制式,畫面為60Hz。歐版以及中國的仿製機為PAL-D制式,50Hz。港版正規機以及某些地區是PAL-60制式,60Hz。下面的說明都是基於60Hz來解釋,50Hz和60Hz時間參數有點差異。
當遊戲機啟動後,遊戲機會每16.67ms(60Hz,1/60秒)讀取一次手柄的狀態。這個過程通過兩個步驟來實現。首先主機發送一個LATCH鎖存信號脈衝,這個脈衝的寬度為12us。告訴手柄開始檢查按鍵狀態。在LATCH的脈衝發送後間隔6us,CLOCK(PULSE)線開始發送周期為12us,占空比50%的脈衝信號,一共發8次。每次的脈衝的上升沿對DATA線採樣,檢查DATA線是否在該位置被拉低。按鍵被檢查的順序是固定的(遊戲機設計時候設計人員固定的),按鍵順序為A,B,SEL,START,上下左右。上圖DATA線上標註的就是每個按鍵時序所在位置。如果按鍵被按下,那麼對於位置的DATA是低電平。===============================分隔線(以下畫面請自行腦補╮(╯▽╰)╭.....)主機:我要開始檢查手柄狀態了。(biu~~發了一個脈衝)DATA:好的!CLOCK:(頓了一下6us)我要開始發波了...CLOCK:A!DATA:有!(或沒有!)
CLOCK:B!DATA:有!(或沒有!)CLOCK:SELECT!DATA:有!(或沒有!)CLOCK:START!DATA:有!(或沒有!)CLOCK:上!DATA:有!(或沒有!)CLOCK:下!DATA:有!(或沒有!)
CLOCK:左!DATA:有!(或沒有!)CLOCK:右!DATA:有!(或沒有!)檢查完畢~~~~主機頓了16.67ms,再重複上面這個過程。===========================對於NTSC和PAL-60制式的主機,一秒會對手柄進行60次狀態檢查。PAL-50制式的則是50次。絕大多數的遊戲機手柄,乃至現在的PS4,XBOX ONE,電腦USB手柄,其原理仍舊是通過時鐘和命令來進行通信,當然結構和協議要比FC的複雜得多。=============題外話也許看官會問,為什麼不是通過每個按鍵的開關來控制。還是以FC手柄來看,控制命令的只有3根線。如果是通過開關來控制,那麼每個按鍵都有一根線,就需要8根IO控制線,翻了一倍多。用命令時序的方式很大程度上簡化了這一部分的硬體設計。試想手柄按鍵再多一些,如果是現在PS3手柄那樣多的按鍵,這個介面得多複雜。
不過,這種方式有一個缺點,就是編碼和解碼之後會存在一定延遲,加上手柄通常使用的導電膠按鍵方式,會加大延遲。當然這種延遲對於絕大多數人和絕大多數遊戲都是感覺不到的。不過對於90年代中期開始那些需要精確到1幀操作的格鬥和飛行射擊遊戲來說確實十分重要的。在街機房,那些常見的機台都是遵循JAMMA標準的,SNK的NEOGEO家用機手柄也是,其所有按鍵和搖桿都是開關方式直接IO輸入的,加之其使用的微動開關,最大程度將延遲減小了。即便是現在一些主流的格鬥遊戲比如街霸或鐵拳系列,那些真正的玩家都是去街機廳練手的,而很少會用PS3/XBOX360加一個USB搖桿去練習。國際性的比賽也是如此。街機JAMMA介面標準。所有按鍵都是直接輸入。
推薦閱讀:
※遊戲作為第九藝術的傳達能力是否受限?
※高手與新手眼中遊戲的平衡性往往是不同的,如何根據玩家水平的不同權衡遊戲的平衡性改進?
※請問什麼時候才是買NS的最佳時刻呢?
※LoL 中你印象最深的版本強勢英雄?
※喜歡格鬥/賽車/射擊/足球/體感類遊戲的上班族買XBO/PS4合適嗎?
TAG:遊戲 | 任天堂Nintendo | 電子 | 紅白機FamilyComputer,FC |