1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Splatoon3のドット打ちをドック接続でやりたい

Last updated at Posted at 2022-09-15

こちらの記事を読んでやりたくなって、ELEGOO UNO R3 を買って試してみました。
やっぱりめちゃくちゃ楽。しかし一つだけ欠点があって…
『電池の減りが心配』ということ。
じゃあドック接続すればいいじゃんと思いやってみると、Proコンの接続まではいいんだけどAキーを押さないと画面が戻れずめちゃくちゃずれる。

じゃあAボタンを押す動作を追加しようというわけで

上の記事でも使っているSwitch-FightstickJoystick.cを編集します。

Joystick.c
# @@ -181,6 +181,10 @@ void GetNextReport(USB_JoystickReport_Input_t* const ReportData) {
    switch (state)
    {
        case SYNC_CONTROLLER:
+           if (report_count == 10)
+           {
+               ReportData->Button |= SWITCH_A;
+           }
            if (report_count > 100)
            {
                report_count = 0;

Joystick.cの181行目付近、GetNextReport()内のswitch文に書き加えます。
内容は簡単で、report_countが10回目の時にAボタンを送信しているだけです。つまりデバイスが認識されてからAボタンを押して画面を戻しているわけです。
別に10カウントに意味はありません。読み込んでからある程度置きたいなって思ったからです。心配なら書き始める判定をしているのが追記部分の1行下のreport_count > 100なのでこの100をもう少し大きくしてやるといいかも。ダメでした。普通によくわからんズレ起きます。ここ書き換えなくても失敗することはなさそうです。

あとは記事通りにmakeしてdfu-programmerで書き込んで完成です。

まとめ

すぐ実装できて簡単に接続できるようになったのでいいとおもいました!(小並感)

追記 (2022/09/16 2:00)

書き終わった後そのままにしておくとスリープでロストすることが多々あったので修正。

Joystick.c
# @@ -221,9 +229,10 @@ void GetNextReport(USB_JoystickReport_Input_t* const ReportData) {
            state = MOVE_X;
            break;
        case STOP_Y:
            if (ypos < 120 - 1)
+           {
                state = MOVE_Y;
+           }
            else
+           {
+               ReportData->Button |= SWITCH_MINUS;
                state = DONE;
+           }
            break;
        case MOVE_X:

マイナスキーでとりあえず保存するようにしました。あとはもう一回開いたときに保存されてるようになってます。

さらに僕の環境だと1番細いペンに自動でならなかったので修正。

Joystick.c
# @@ -197,6 +201,10 @@ void GetNextReport(USB_JoystickReport_Input_t* const ReportData) {
            report_count++;
            break;
        case SYNC_POSITION:
+           if (report_count == 200)
+           {
+                   ReportData->Button = SWITCH_L;
+           }
            if (report_count == 250)
            {
                report_count = 0;

Lボタンを押して調整するようにしてあります。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?