Switch硬體外掛完成 - Switch

Sierra Rose avatar
By Sierra Rose
at 2018-01-24T00:34

Table of Contents

※ 引述《wayne30349 (怪人)》之銘言:
: 本版是NS板,發文討論者請注意
: 01. 全面禁止改機文與盜版討論
: 任何盜版徵求、模擬器、改機討論嚴格禁止
: 非官方NFC卡及Amiibo也視同盜版.
: 相關文章將視情況給予退文或水桶30天起。
: ----------------------------------------------------
: 先聲明,此為外部設備,就像是拿轉接頭把PS4搖桿轉成Switch一樣的方式
: 也就是修改USB HID的內容
: 並非硬體改機,也不是軟體改機,最簡單的說法是自己寫搖桿
: 前情提要
: https://forum.gamer.com.tw/C.php?bsn=31587&snA=4622&tnum=1
: 前幾天是照抄Hori搖桿的描述符,但是發現一動也不動...
: 不過後來搜尋到國外大神把描述符給寫好了
: 後來才發現,原來PC端跟Switch端有些不同
: https://github.com/shinyquagsire23/Switch-Fightstick/blob/master/HORI_Descriptors
: 於是花一個小時改寫一下Code
: 目前是完成了
: https://www.youtube.com/watch?v=R3k4lsuIvaU
: uint8_t buf_standby[8] ={0x00,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//待命
: uint8_t buf2_up[8] ={0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//上
: uint8_t buf2_down[8] ={0x00,0x00,0x04,0x80,0x80,0x80,0x80,0x00};//下
: uint8_t buf2_left[8] ={0x00,0x00,0x06,0x80,0x80,0x80,0x80,0x00};//左
: uint8_t buf2_right[8] ={0x00,0x00,0x02,0x80,0x80,0x80,0x80,0x00};//右
: uint8_t buf3_L[8] ={0x10,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//L
: uint8_t buf3_R[8] ={0x20,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//R
: uint8_t buf3_LR[8] ={0x30,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//L+R
: uint8_t buf3_A[8] ={0x04,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//A
: uint8_t buf3_B[8] ={0x02,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//B
: uint8_t buf3_X[8] ={0x08,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//X
: uint8_t buf3_Y[8] ={0x01,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//Y
: 這些是按鍵的RAW值,只要我們把按鍵寫好,延遲寫好
: 就可以上班之後掛印度神劍的七冰拉
: 影片是插上之後,上下左右的模擬


今天開始嘗試寫異域神劍的自動抽神劍程式
https://www.youtube.com/watch?v=h1V95wCpCk8
倒是在按鈕上面發生一些問題
原來是在傳按鍵後,需要再傳一個待命指令
不然他會認為是按著不放,另外按鍵與按鍵需要間格一些時間(我是設定100ms)
不然會出現奇怪的錯誤

之前寫的按鍵我在這裡一併附上


uint8_t buf_standby[8] ={0x00,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//

uint8_t buf2_up[8] = {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//上
uint8_t buf2_down[8] = {0x00,0x00,0x04,0x80,0x80,0x80,0x80,0x00};//下
uint8_t buf2_left[8] = {0x00,0x00,0x06,0x80,0x80,0x80,0x80,0x00};//左
uint8_t buf2_right[8] = {0x00,0x00,0x02,0x80,0x80,0x80,0x80,0x00};//右

uint8_t buf3_L[8] = {0x10,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//L
uint8_t buf3_R[8] = {0x20,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//R
uint8_t buf3_LR[8] = {0x30,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//L+R
uint8_t buf3_L2[8]= {0x40,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//L2
uint8_t buf3_R2[8]= {0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x00};//R2

uint8_t buf3_A[8] = {0x04,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//A
uint8_t buf3_B[8] = {0x02,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//B
uint8_t buf3_X[8] = {0x08,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//X
uint8_t buf3_Y[8] = {0x01,0x00,0x0f,0x80,0x80,0x80,0x80,0x00};//Y

uint8_t buf3_HOME[8]= {0x00,0x10,0x0f,0x80,0x80,0x80,0x80,0x00};//HOME
int8_t buf3_capture[8]= {0x00,0x20,0x0f,0x80,0x80,0x80,0x80,0x00};//捕捉
uint8_t buf3_plus[8]= {0x00,0x02,0x0f,0x80,0x80,0x80,0x80,0x00};//+
uint8_t buf3_Minus[8]= {0x00,0x01,0x0f,0x80,0x80,0x80,0x80,0x00};//-


以下為HID敘述符
usbd_hid0_report_descriptor[] = {

HID_UsagePage(0x01),
HID_Usage ( 0x05 ),
HID_Collection ( HID_Application ),
HID_LogicalMin ( 0 ),
HID_LogicalMaxS ( 1 ),
HID_PhysicalMin ( 0 ),
HID_PhysicalMaxS (1 ),
HID_ReportSize ( 1 ),
HID_ReportCount(13),
HID_UsagePage ( 0x09 ),
HID_UsageMin(0x01),
HID_UsageMax(0x0d),
HID_Input(0x02),
HID_ReportCount(0x03),
HID_Input(0x01),
HID_UsagePage(0x01),
HID_LogicalMax(0x07),
HID_PhysicalMaxS(0x3b01),
HID_ReportSize(0x04),
HID_ReportCount(0x01),
HID_Unit(0x14),
HID_Usage(0x39),
HID_Input(0x42),
HID_Unit(0x00),
HID_ReportCount(0x01),
HID_Input(0x01),
HID_LogicalMaxS(0xff00),
HID_PhysicalMaxS(0xff00),
HID_Usage(0x30),
HID_Usage(0x31),
HID_Usage(0x32),
HID_Usage(0x35),
HID_ReportSize(0x08),
HID_ReportCount(0x04),
HID_Input(0x02),
HID_UsagePage(0x00ff),
HID_Usage(0x20),
HID_ReportCount(0x01),
HID_Input(0x02),
HID_Usage(0x2126),
HID_ReportCount(0x08),
HID_Output(0x02),
HID_EndCollection

};

另外有人問說,這跟市面上賣的n100有何不同
我個人不知道n100是否可以在電腦上寫腳本
如果不能,只能手動按手把錄影腳本的話
想一下你按七冰的任務,任務做完十分鐘後你還要再按第二次的不方便姓

或者有些並不是固定按A的遊戲
像是這個
https://unwire.hk/2017/12/04/switchjoyconpatch/game-channel/
這樣的話錄製腳本就不行了,如果是MCU自己寫,我可以在按鍵間格上
寫一些時間的公式等等







--
asship: 給了6樓的基於蛋蛋大大,不知道要扣稅,815變733 囧 10/25 21:22
baseonballs: 已收到 不過我的名字baseonballs是棒球4壞球保送 10/25 21:29
baseonballs: 的意思...不是基於蛋蛋啊 囧囧囧 10/25 21:30

--
Tags: Switch

All Comments

Queena avatar
By Queena
at 2018-01-25T01:13
給了6樓的基於蛋蛋大大,不知道要扣稅,815變733 囧
Christine avatar
By Christine
at 2018-01-29T05:29
已收到 不過我的名字baseonballs是棒球4壞球保送
Eartha avatar
By Eartha
at 2018-01-31T03:46
的意思...不是基於蛋蛋啊 囧囧囧
Quintina avatar
By Quintina
at 2018-02-02T04:04
讓我想起寫8051的日子,好想寫程式呀...
Edwina avatar
By Edwina
at 2018-02-03T11:57
好想問有沒有用arduino當搖桿的教學
Robert avatar
By Robert
at 2018-02-04T12:53
adruino的話解碼器要自己寫吧
Franklin avatar
By Franklin
at 2018-02-08T15:45
不明覺厲

有關eshop數位版的區域問題

Christine avatar
By Christine
at 2018-01-23T22:09
剛剛朋友拿著歐版實體瘋兔+馬力歐片結果上了日版的eshop買了DLC~ 當然是會出現兩個icon,所以他傳訊息問我說哪裡可以賣實體片。 我介紹了他ptt gamesale版去賣可能也是個門路。 不過這個時候我們就會有一個疑問? 請問,買來的實體片上面,要怎麼看是什麼區域的呢? 是最後三碼嗎? 目前我看到漆彈2 ...

巴哈要搶先實況中文版薩爾達了

Regina avatar
By Regina
at 2018-01-23T20:21
(不行請刪) 大家來揪問題 字體很漂亮,但翻譯問題大家一起來找 目前最大宗就是心心吧 https://i.imgur.com/6pYUey3.jpg 其他還有像「下去」覺得有些太口語了(大家應該都記得FE的「吃飯」吧w) ※ 引述《s1155697 (s1155697)》之銘言: : https:// ...

花枝splatoon2減輕爆風傷害技能的實用性

Agatha avatar
By Agatha
at 2018-01-23T19:54
哈囉 我剛好前幾天把常穿的裝備塞了防爆風,來分享一下 首先下表是在爆風傷害多少的狀態下,需要多少能力值才能活下來 (1大能力算10 1小能力算3 爆風傷害 / 需要能力值 100 3 (1小 110 9 (3小 120 15 (5小 或1 ...

薩爾達傳說 中文預告

Catherine avatar
By Catherine
at 2018-01-23T18:56
https://youtu.be/nWxtdvI8MNM 不錯的字體,比英日版的內建好,之前看logo的「曠野之息」還緊張了一下 1月發表會版本 https://www.facebook.com/Nintendo.hk/posts/2010045205878619 - ...

巴哈要搶先實況中文版薩爾達了

Rebecca avatar
By Rebecca
at 2018-01-23T16:30
https://gnn.gamer.com.tw/9/158149.html 巴哈姆特電玩瘋預定今(23)日下午 19:00 - 20:00 直播 Nintendo Switch 遊戲《薩爾 達傳說 曠野之息》中文版,由編輯阿豪主持,特別邀請到編輯恭介 、阿 KEN,在 2 月 1 日中文版正式 ...