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