資料介紹
描述
Necroware 的 GamePort 適配器
許多來自復(fù)古社區(qū)的人仍然保留著他們早期心愛的操縱桿和游戲手柄。這些設(shè)備經(jīng)常在我們地下室的某個黑暗角落里度過它們的一生,出于懷舊的原因,我們不敢扔掉它們。它們讓我們想起了我們的童年,我們在那里玩過我們的 Wing Commanders、X-Wings、Descents 和許多其他游戲。這些舊的游戲桿都是用來連接游戲端口的,通常是在聲卡上。但到了 90 年代末和 2000 年初,游戲端口從我們的電腦上消失了,取而代之的是 USB,我們的舊游戲桿也消失在了過去。今天并不是每個人都擁有一臺完整的復(fù)古 PC,許多人正在使用帶有 DOSBox 的現(xiàn)代計算機來玩舊游戲,有時還使用現(xiàn)代 USB 游戲桿。但是不會 用我們當(dāng)時使用的相同操縱桿玩舊游戲不是很好嗎?這就是該適配器發(fā)揮作用的地方。它可用于將游戲端口操縱桿連接到 USB 端口。
GamePort 適配器視頻:
第 1 部分:簡介
第 2 部分:更新
它是如何工作的?
該適配器圍繞 Arduino Pro Micro 構(gòu)建,它使用與 Leonardo 相同的 ATmega32U4 微控制器。該微控制器具有內(nèi)置 USB HID 功能,可用于構(gòu)建 HID 輸入設(shè)備,例如游戲桿。適配器本身超級簡單,主要的腦力都花在了軟件上。非常簡單,它讀取操縱桿狀態(tài)并通過 USB 將數(shù)據(jù)發(fā)送到計算機,計算機認(rèn)為它正在與 USB 操縱桿通信。
這個有什么特別之處?
已經(jīng)有很多用于基本模擬游戲桿的游戲端口到 USB 適配器,而且據(jù)我所知,微軟也在努力與 Sidewinder 游戲桿進(jìn)行通信。但是沒有適用于不同類型操縱桿的通用適配器。該適配器為各種模擬和數(shù)字操縱桿實現(xiàn)了多個驅(qū)動程序,并可選擇在未來添加更多。
功能概述:
支持帶有 2/4 按鈕和 2/4 軸的通用模擬操縱桿
四個開關(guān)選擇操縱桿類型
自動檢測各種數(shù)字協(xié)議操縱桿
自動校準(zhǔn)
極低的輸入延遲
模擬和數(shù)字操縱桿有什么區(qū)別?
許多人稱只有按鈕的操縱桿或游戲手柄是數(shù)字的。這是對的,因為一個按鈕要么被按下,要么沒有被按下。兩者之間不能有模擬值。然而,在這種情況下,數(shù)字意味著不同的東西。一個游戲端口包含 15 個引腳,其中 8 個用于操縱桿通信。4 個引腳用于按鈕并承載開/關(guān)意義上的數(shù)字值,4 個引腳用于模擬軸,其提供介于 0V 和 5V 之間的電壓。早期制造的操縱桿使用這種引出線。它們最多可以有 4 個按鈕和 4 個軸,并且與 DOS 兼容。后來,在Windows 95/98 時代,許多操縱桿也被制作成可以插入游戲端口,但不限于4 個按鈕和4 個軸。他們有很多更令人興奮的功能,比如帽子開關(guān)和油門控制。但這是如何工作的呢?好吧,制造商實施了他們的驅(qū)動程序,以使用專有通信協(xié)議通過游戲端口與操縱桿通信。例如,通過將游戲端口的一個引腳用作時鐘,將另一個引腳用作數(shù)據(jù),可能性幾乎是無限的。這種操縱桿也稱為數(shù)字操縱桿,因為它們使用數(shù)字協(xié)議與 PC 通信。突然之間,許多功能成為可能,但這些功能的代價是失去了與 DOS 的兼容性。你不能只是將這樣的操縱桿插入游戲端口并期望它在舊的 DOS 游戲中工作。插頭是一樣的,但信號完全不同。通過將游戲端口的一個引腳用作時鐘,將另一個引腳用作數(shù)據(jù),可能性幾乎是無限的。這種操縱桿也稱為數(shù)字操縱桿,因為它們使用數(shù)字協(xié)議與 PC 通信。突然之間,許多功能成為可能,但這些功能的代價是失去了與 DOS 的兼容性。你不能只是將這樣的操縱桿插入游戲端口并期望它在舊的 DOS 游戲中工作。插頭是一樣的,但信號完全不同。通過將游戲端口的一個引腳用作時鐘,將另一個引腳用作數(shù)據(jù),可能性幾乎是無限的。這種操縱桿也稱為數(shù)字操縱桿,因為它們使用數(shù)字協(xié)議與 PC 通信。突然之間,許多功能成為可能,但這些功能的代價是失去了與 DOS 的兼容性。你不能只是將這樣的操縱桿插入游戲端口并期望它在舊的 DOS 游戲中工作。插頭是一樣的,但信號完全不同。不要只是將這樣的操縱桿插入游戲端口并期望它可以在舊的 DOS 游戲中運行。插頭是一樣的,但信號完全不同。不要只是將這樣的操縱桿插入游戲端口并期望它可以在舊的 DOS 游戲中運行。插頭是一樣的,但信號完全不同。
該適配器支持哪些操縱桿?
當(dāng)前,實現(xiàn)了以下驅(qū)動程序。要選擇正確的驅(qū)動程序,您必須使用四個開關(guān),如表中所示。未來開關(guān)可能會發(fā)生變化或擴展,請留意更新。
操縱桿模型按鈕AxesHatSW1-4評論通用模擬2200000通用模擬4201000通用模擬43001003rd Axis is throttleGeneric Analog4401100CH FlightStick4410010Analog, DOS-compatibleCH F16 Combat Stick10310110Analog, DOS-compatibleThrustMaster43110 10Analog, DOS-compatibleSidewinder GamePad10201110Digital protocolSidewinder 3D Pro8411110Digital protocolSidewinder 3D Pro Plus9411110First version of Precision ProSidewinder Precision Pro9411110Digital protocolSidewinder FFB Pro9411110Digital, FFB not yet implementedSidewinder FFB Wheel8301110Digital,F(xiàn)FB 尚未實現(xiàn)Gravis GamePad Pro10200001Digital protocol (GrIP)Logitech WingMan Extreme6311001Digital protocol (ADI)Logitech CyberMan 28601001Digital protocol (ADI)
評論:
請注意不同系列的數(shù)字設(shè)備如何使用相同的開關(guān)。由于全數(shù)字通信,這是可能的。使用此方法,適配器會在知道它已連接到數(shù)字游戲桿時立即實施自動檢測。
目前,只實現(xiàn)了列出的 Sidewinder 設(shè)備的驅(qū)動程序,因為我手頭沒有其他型號。Precision Pro 也可以在 USB 上本地工作,但仍然可以實現(xiàn),因為我們可以。
Gravis 使用了他們的 GrIP 協(xié)議,該協(xié)議目前僅適用于 Gravis GamePad Pro,但目前還沒有菊花鏈的可能性。
Logitech 使用的 ADI 協(xié)議的實施應(yīng)該適用于支持該協(xié)議的所有設(shè)備。然而,目前只有列出的羅技設(shè)備經(jīng)過測試。
測試了哪些操縱桿?
許多野外的操縱桿都使用相同的數(shù)字協(xié)議,或者向后兼容模擬操縱桿,因為它們在 DOS 時代使用過。以下列表包含其他人報告的到目前為止工作的所有設(shè)備:
Gravis Analog Pro(模擬)
Gravis PC GamePad(模擬)
Gravis GamePad Pro
QuickShot QS-123E“勇士5”(模擬)
QuickShot QS-201“超級戰(zhàn)士”(模擬)
QuickShot QS-203“復(fù)仇者”(模擬)
響尾蛇游戲手柄
響尾蛇 3D Pro
響尾蛇 3D Pro Plus
Sidewinder Precision Pro
Sidewinder ForceFeedBack Pro
Sidewinder 力反饋輪
羅技 WingMan Extreme Digital
羅技 CyberMan 2
InterAct UltraRacer PC(模擬)
Sidewinder 3D Pro 可以在模擬和數(shù)字模式之間切換,在模擬模式下它可以模擬 ThrustMaster 和 CH FlightStick。這就是您在上表中看到它們的原因。不幸的是,我在現(xiàn)實中并沒有那些操縱桿,所以可能是實現(xiàn)不太正確。
什么是自動校準(zhǔn)?
舊的模擬操縱桿內(nèi)部有電阻,指定為 100 kOhm。不幸的是,這些電阻要么磨損了,要么質(zhì)量差,要么從一開始就錯了。因此,大多數(shù)通用模擬操縱桿都有調(diào)整螺釘來校正操縱桿的中心點。此外,許多游戲在其設(shè)置中都有校準(zhǔn)選項以重新調(diào)整操縱桿。使用 USB 和新的數(shù)字解決方案不再需要校準(zhǔn),并且完全在操縱桿和/或驅(qū)動器中實現(xiàn)。許多現(xiàn)代游戲不再提供重新校準(zhǔn)操縱桿的選項。如果我們嘗試通過此適配器使用舊的模擬搖桿玩此類較新的游戲,搖桿中心點將完全偏移。這就是適配器在內(nèi)部實現(xiàn)自動校準(zhǔn)并將已校正的值呈現(xiàn)給操作系統(tǒng)的原因。
注意:使用模擬操縱桿的硬性要求是在插入 USB 端口期間所有軸必須處于中間狀態(tài),因為所有后續(xù)校準(zhǔn)都是基于初始狀態(tài)進(jìn)行的。
對實施的技術(shù)見解
代碼有很好的文檔記錄,所以如果您對細(xì)節(jié)感興趣,請隨時查看驅(qū)動程序?qū)崿F(xiàn)。所有的模擬操縱桿實際上都是一項簡單的任務(wù),但 Sidewinder 數(shù)字協(xié)議有點困難。已經(jīng)有一些為 Arduino 制作的 Sidewinder 協(xié)議的實現(xiàn)。然而,它們大多只適用于 Sidewinder GamePad,并不是真正通用的。最后,我深受 Linux Sidewinder 驅(qū)動程序?qū)崿F(xiàn)的啟發(fā)。您在該項目中看到的代碼是完全重寫的,我只是將 Linux 驅(qū)動程序?qū)崿F(xiàn)作為參考來了解其工作原理。Sidewinder 專利 US#5628686A 也有很大幫助,特別是在 Sidewinder 3D Pro 的數(shù)字和模擬模式之間切換。
與已經(jīng)提到的用于 Arduino 實現(xiàn)的 Sidewinder 相反,這個不依賴于中斷。此實現(xiàn)與 Linux 驅(qū)動程序的功能類似。它輪詢端口并由于同步過程使很多事情變得更簡單。最大的問題是 Sidwinder 設(shè)備發(fā)送數(shù)據(jù)的速度非???,時鐘脈沖只有 5us。不可能為此使用 Arduino 的 digitalRead(...) 函數(shù)。在 16MHz 的 Arduino Pro Micro 上每次調(diào)用大約 2.7us 太慢了。它根本不可能輪詢 5us 脈沖,具有如此緩慢的功能,甚至不考慮對介于兩者之間的數(shù)據(jù)進(jìn)行處理。因此,出于這種需要,我自己的實現(xiàn)應(yīng)運而生,在相同的硬件上,它的速度提高了 50%,每次調(diào)用只需要大約 1.6us。自定義 I/O 功能使得以 Sidewinder 操縱桿所需的速度讀取數(shù)據(jù)成為可能。最好的部分是代碼是用純 C++ 編寫的。它非常易于閱讀和使用。沒有宏,沒有匯編器或任何骯臟的黑客,只有很多優(yōu)化。
物料清單 (BOM)
硬件超級簡單。要構(gòu)建適配器,您需要該項目的 PCB 和以下部件:
PartQtyLCSC #Digikey #Mouser Electronics #CommentCONN11C77835609-5371-ND523-L77SDA15SA4CH4FDB15 母連接器R1..R44C17296513-MFR-25FTE52-100KCT-ND603-MFR-25FTE52-100K100 kOhm 電阻器SW11 C157812449-KG04ET-ND642-DS04TDIP-4開關(guān)U11C72120ED3051-5-ND649-DILB24P -223TLFDIP24 插座(可選)U11N/A1568-1060-ND474-DEV-12640Arduino Pro Micro(ATmega32U4 16MHz,5V),包括兩個 12 針接頭連接器,MicroUSB 版本(參見“已知問題”)
已知的問題
模擬操縱桿上的一些軸偏移
自動校準(zhǔn)要求所有軸在初始化時都處于中心位置。請參閱有關(guān)自動校準(zhǔn)的段落。
操縱桿不工作
確保您使用的是受支持的操縱桿之一或可以在傳統(tǒng)模擬模式下工作的操縱桿
Arduino 上的 MicroUSB 端口不夠穩(wěn)定
請改用 Arduino 的 USB-C 版本。
或者始終將 MicroUSB 電纜連接到 Arduino MicroUSB 版本,以避免進(jìn)一步磨損,并僅在電纜的遠(yuǎn)端進(jìn)行插拔操作。
如何幫助項目?
最好的方法是實現(xiàn)更多的驅(qū)動程序。因為我只有上面提到的操縱桿,所以我不能貢獻(xiàn)比目前包含的更多的東西。
?
- ESP8266 SMD轉(zhuǎn)DIP適配器開源
- ESP8266 SMD轉(zhuǎn)DIP適配器開源分享
- 億佰特E32編程適配器開源
- 達(dá)拉斯DS1225Y FRAM適配器開源
- 面包板ZIF插座適配器開源分享
- MCE適配器開源分享
- BPROM讀取適配器 v0.2開源
- RC ONE Keypad MX(USB適配器)開源
- KCORES FlexibleLOM適配器開源項目
- Soic 8轉(zhuǎn)DIP適配器開源項目
- LQFP100轉(zhuǎn)DIP適配器開源項目
- USB B微型適配器開源項目
- Commodore 64 RCA視頻適配器開源分享
- MOS 6510/8500 CPU適配器開源分享
- 通用電子紙適配器PCB開源資料
- 紅外適配器驅(qū)動怎么安裝 353次閱讀
- fireflyAIO-3288C主板電源適配器簡介 2037次閱讀
- FireflyRK3128主板電源適配器介紹 2306次閱讀
- Firefly關(guān)于RK3288電源適配器簡介 2556次閱讀
- 光纖適配器和耦合器 3322次閱讀
- 光纖適配器與連接器的區(qū)別 3254次閱讀
- 電源適配器發(fā)熱原因 1.7w次閱讀
- 電源適配器的使用壽命_電源適配器的使用方法 1w次閱讀
- 電源適配器行業(yè)發(fā)展趨勢 3734次閱讀
- 簡介電源適配器結(jié)構(gòu)組成及核心功能 1w次閱讀
- 解答電源適配器就是充電器嗎 5.5w次閱讀
- 光纖適配器是什么_光纖適配器的作用介紹 4.1w次閱讀
- 華碩筆記本適配器拆解圖 4.8w次閱讀
- orico藍(lán)牙適配器怎么用_orico藍(lán)牙適配器安裝 1.6w次閱讀
- java適配器模式實例 3832次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論