メモ帳DPA

ぐぐってあまり引っかからないような何かがあったら書いたりする

MTGA ヒストリック BO1デッキ 4色ネオストーム

f:id:de0:20210403213013p:plain
MTGAで上位ランクのみが得られる、ミシックチャンピオンシップ予選の参加権利を初めて獲得できた。うれしい。
予選でこのまま勝てるとは思えないので記念受験にはなるだろうけど、流行りのトップTierデッキではなく、自分なりに調整したデッキで結果が得られたので、調子に乗ってメモを記録しておくことにします。

デッキ

ネオストームを使った。
mtgwiki.com

これは、新生化で出た生物で新生化をコピーするループを作ることで、8体の3/3が展開されて速攻付きで2連続で殴り53点で即死させるコンボデッキで、新生化コンボとも言われる。

コンボデッキが一番好きなんだけど、宿命として対処策が多いので基本的にあまり強くない。このデッキも結構前に一瞬だけ流行ったが、やられると致命的なカードが多いせいかもうあまり見なくなってしまった。(多分墓掘りの檻と思考囲いが悪い)

このデッキは通常は赤青緑で構成されるが、確定サーチができればもっと揃うのではと無理やり黒を加えてみたところ、偶然にも環境との噛み合いが良く予想以上に勝てた。
普段はあまり勝率とかは気にしていなかったが珍しくコンボデッキでそれなりに勝てそうだったので、少しずつ弄りつつ回せるだけ回してみた結果、ランクインまで戦えてしまった。
BO1の方がどう考えても対策札が少なく有利なので、BO3は止めてそちらに絞ってプレイした。

f:id:de0:20210403214836p:plain

色拘束がきつめだけど、全色出せるクリーチャーが8枚入っているので意外とギリギリどうにかなる。(事故るときは事故る)

最高ランクは183位だった。

戦績

  • 勝率:63%
  • 先行:68%
  • 後攻:59%

BO1ヒストリックの環境デッキのツートップである、エルフと赤単を狩れたのが大きかった。
揃えば勝てる系のデッキに対しては、すべての代わりになるカードが4枚増えたおかげで「揃えば」の確率が上がりさらに有利になっている、気がする。

コンボ

コンボルート
必要なマナ 必要な自陣 手札のコンボパーツ
1 1青青緑 なし 海門の嵐呼び + 新生化
2 青青緑緑 1マナ生物(金のガチョウ) 新生化 + 新生化
3 1青緑赤赤 2マナ生物(楽園のドルイド) 新生化 + 二重詠唱の魔道士
4 2青青緑 海門の嵐呼び 玻璃池のミミック + 新生化
5 上記+1マナ 上記 + 願い爪のタリスマン コンボパーツどれか1枚

元のデッキの完成度がかなり高く、更地から4マナの2枚コンボで完成する上、新生化さえあれば別の復数のルートも備わっている点がとても美しい。
願いのタリスマンを加えたことで5のルートが加わって、揃わずに何もできず終わる確率は大幅に低くなった。

コンボ成立後の選択肢
  1. 二重詠唱の魔道士x8 + タクタクの瓦礫砦x1 + 戦闘の祝賀者 x1
    • 最大53点
    • 手札または墓地にある二重詠唱またはミミック1枚につき-6点
    • タクタクをインスタントタイミングで除去されると攻撃できず0点
  2. 二重詠唱の魔道士x8 + タクタクの瓦礫砦x2
    • 最大24点
    • 手札または墓地にある二重詠唱またはミミック1枚につき-3点
    • タクタクが冗長化されるので除去耐性が付く
    • 白青黒は2マナ、赤は3マナが立っていたら、こっちに切り替えるべき状況か検討する
      • 白:封じ込め
      • 青:バウンス
      • 黒:いろいろ
      • 赤:4点分の火力
    • 自前で何かサクれる場合は≪致命的な一押し≫の可能性があるので黒1マナでも警戒する

基本的に3マナ生物であれば最後に何でも出せるので、昔は妨害後のロングゲームに「二重詠唱の魔道士x8 + タクタクの瓦礫砦x1 + 自然の怒りのタイタン、ウーロx1」で備えるルートもあったが禁止された。
BO3の場合、「二重詠唱の魔道士x8 + タクタクの瓦礫砦x1 + 運命の神、クローティスx1」で妨害しづらい2点クロックを設置するルートなんてのもある。

負けパターン

大体以下の状況になると負ける。どれもそんなに特別な行為ではないため結構脆い。

  1. ハンデス(ほぼ思考囲い)でパーツを落とされる
  2. 新生化を打つ前にインスタントタイミングで生贄を全て破壊される
  3. 打ち消される
  4. 墓掘りの檻領事の権限鎮まらぬ大地、ヤシャーン静寂をもたらすものを配置される
  5. すべてのタクタクの瓦礫峠を手札に引く

これらを回避しつつ、こちらが死ぬ前に成立させれば勝ち、出来なければ負け。

5のケースを忘れているプレイヤーは結構多い。この状況下でもハッタリでとりあえずコンボを開始すると、新生化がコピーされたあたりでサレンダーしてくれる場合がある。

マリガン

  • 2回くらいまではいける。3回でも引きさえ良ければどうにかなる。
  • 新生化またはタリスマンを引くことを最優先する
  • タクタクの瓦礫峠と戦闘の祝賀者はライブラリから直に出すので手札に来てほしくない
    • タクタクの瓦礫峠を2枚引いた場合は、他のコンボパーツ+山札に戻すカードが揃っていない限りマリガンする
    • 戦闘の祝賀者を引いても、他の手札が良ければ続行する

相手色別勝率と対処メモ (試合数多い順)

緑:71%
  • ほぼエルフデッキだった。今の環境では一番よく当たる。
    • 2021/3 ヒストリックアンソロジー4/カルドハイム環境
  • コンボ妨害手段を何も持たないので、殴り殺される前に揃えれば勝ち。
  • タリスマンを渡しても致命的なカードはサーチされない。
    • タリスマンはコンボ成立ターンに起動してその場で殺すのが基本だが、この相手にはコンボ成立しないターンにも起動することができる。
  • 地味テクニックとして、相手の≪集合した中隊≫を二重詠唱でコピーする手がある。
    • めくれた中に二重詠唱またはミミックがある限り、集合した中隊のコピーを打ち続けることができる
  • 干渉する手段がある場合は、≪エルフの大ドルイド≫を最優先で潰す。
    • 召喚酔いが解けるとマナ使い放題タイムが始まり、4/4以上が複数並ぶとコンボが成立したとしても殴り合いで負けてしまう。
赤:60%
  • 7割くらいがバーンデッキ、3割くらいがゴブリンデッキだった。
  • 相棒がジェガンサの場合バーンの可能性が高い。
  • 新生化前に海門の嵐呼びを簡単に破壊されうるので意識する。
    • ≪楽園のドルイド≫が生存していると対処できるので、出せたら基本的にコンボ成立まで呪禁を解かないようにし大切に扱う。
    • ゴブリンは一見干渉手段が無さそうだけど、≪宝石の手の焼却者≫で焼かれる可能性があるので2マナ立っていたら注意する。
  • バーンの場合は、タリスマンを渡しても大幅に相手の打点が伸びる可能性は低いので、状況次第ではコンボ非成立のターンに起動させてもよい。
  • ゴブリンの場合は、マクサスが出せない状態かつ楽園のドルイドが自陣に居る時以外は安易にタリスマンを渡してはいけない。
赤黒:48%
  • ほぼアルカニスト。
  • 天敵の≪思考囲い≫を墓地再利用込みで死ぬほど擦ってくるので厳しい戦いになる。クリーチャー破壊もあるのでなお厳しい。
    • 現環境の最強1マナ呪文の一つなので、黒いと大体入っていてコンボ的には非常につらい
  • 基本的には妨害が間に合わないことを祈りつつ最速で成立させるしかない。
  • アーティファクト破壊を持っている確率が低いので、タリスマンを1枚配置出来さえすればパーツ1枚分の獲得がほぼ保証される。
    • パーツ1枚をトップ解決してコンボ成立できるケースがそこそこあり、クロックも安めなので、落としきられてもすぐに諦めない。
  • ルールスが見えていたらほぼアルカニストかオーラの二択なので、マリガン時にはタリスマンの優先度を上げる。
青黒緑:56%
  • 多分ほぼ根本原理。(だいたいその前に勝負が付くのではっきりしない)
    • 全色使われずに終わる場合が多いので、計算上これだけは青緑/黒緑/青黒も含んでいる
  • ヨーリオンが見えていたらこの可能性が高い。
  • 飛んでくる思考囲いの枚数次第な気がする。
  • 打ち消しの数は少ない場合が多いが、インスタント除去を持っている可能性が高いので、コンボ成立後はタクタク2枚ルートにするべきかよく考える。
    • 否定の契約を構えられている状態でコンボ突入できるのであれば、どちらにせよ安心できる。
白:53%
  • ほぼ天使。稀に≪厳粛≫コンボの場合がある。
  • コンボへの干渉手段は少ないが、4/4以上の生物を並べられると打点が足りなくて負けるので、成立までの猶予はそこまで長くはない。
  • 魂の管理人≫がいるとコンボ成立時に相手のライフがモリモリ伸びるので、どかせる手段があるならなるべくこいつを優先してどかす。
    • 正義の戦乙女≫が一緒に居るとコンボ中に能力が発動するので、アンタップ生物が並んでいると危ない。
  • ≪スカイクレイブの亡霊≫が入っている場合はタリスマンを狙われるので、渡して大丈夫そうなら早めに起動する。
青白:50%
  • オーラとアゾコンが半々くらい。
  • オーラは有利。
    • 最強生物が誕生して殴り殺される前にコンボ成立させれば勝ち。
    • バウンスは破壊不能無視でオーラを全部剥がしつつ遅延出来るので、≪危険な航海≫を引けたら活躍する。
    • 飛び始めたとしても、ガチョウのブロックで1ターン稼げるのも地味に大きい。
  • アゾコンは滅茶苦茶厳しい。勝てたらラッキー。
    • ≪墓掘りの檻≫をメイン採用している上、≪領事の権限≫もあり、さらに打ち消しまで控えている。基本的には相手の回りが悪いことに期待するしかない。
    • 置物による妨害は相手ターン終わりにバウンスして対処ができるので、復数置かれるまではまだ諦めてはいけない。
    • 領事の権限がある場合も、全除去を持っておらずそのままターンくれる場合があるので、一応コンボできるならそのターン殴れないとしてもやるだけやってみたほうが良い。
    • 配置したタリスマンを起動せずにパーツが揃った場合、コンボ分に加えて1マナあれば、相手の妨害に対し≪否定の契約≫をサーチして0マナで打ち消しが使えるので意識する。
赤緑:50%
  • ほぼグルールアグロ。
  • 殴りきられる前にコンボ決められるかの勝負。
  • 速攻付きでパワーのある生物がどんどん出てくるのでこっちが死ぬまでの猶予は短い。
  • ≪危険な航海≫を宝剣の対象に重ねられるれば死を1ターン免れるので持ってたら狙う。


今のBO1ヒストリック環境的に、アゾコンとアルカニスト以外は大体どうにかなる相手だった。
なおネオストームの相手には滅多に遭遇しなかった。ちょっと寂しい。

終盤の順位変遷

3/30 10:50 #336 -
3/31 0:58 #419 -6位/時
3/31 22:55 #729 -14位/時
4/01 5:00 #1072 -57位/時

各所で言われている、結局締め切り間際に詰めておかないと途中の順位はほぼ無意味だということを体感できた。
終盤数日の試合の重みだけがやたら高くてあまり良いシステムでは無い気がする。

調整

全然ミラー試合が発生しないので、もう誰もネオストーム使ってないのではないかと思ったら、なんとタリスマン入りでカルドハイムチャンピオンシップに出ているプレイヤーがいた。

まず土地だけ真似してみたところ実際意外とどうにかなった。
赤の土地をだいぶ絞りつつ、3枚目まではアンタップインできる2色土地が大量投入されている。
どうしても赤で唱えたいのは≪ヴァラクートの覚醒≫と≪二重詠唱の魔術師≫くらいで、入っている枚数自体は多いが赤は実際さほど重要ではなかった。
二重詠唱をコンボ始点で使う場合はほぼ楽園のドルイドが立っている時なので、ダブルシンボルでも実際は結構出せた。
www.mtggoldfish.com


それを踏まえて、思考囲いを雑に4詰みした構成を今は試している。
色事故の確率が更に上がっているような気もしないでもないけど、コンボ前に安全確認しつつ妨害入れられるのは嬉しい。
遅めのデッキに強くなった半面、速いデッキには対して約に立たないので一長一短かもしれない。
現状の勝率は63%だった。(月末でリセットされたのでミシック帯ではない)

かなり相性が良さそうな≪渦まく知識≫が今度入るので、こちらも期待したい。

f:id:de0:20210404202706p:plain

防音室の扉に連動してPCの音声を自動制御する

PC部屋として防音室を買った。いつでも好きに音を出せて快適になった。
(防音室についての記事は別途そのうちいつか書くかと思う)

防音室の出入りの際は空いた扉から当然音が漏れるので、夜中の利用時はその都度PCをミュートしたりしていた。
開いてるタイミングと音出したくないタイミングは一致しているので、これはセンサーつければ簡単に自動化出来るのではということに気づいた。

作った

できた。磁力でドアの開閉を検出できるセンサーがあったので、Arduino(pro micro)に単純に半田付けしたらそれだけで超簡単に完成した。
f:id:de0:20210101134948j:plain

ドアの端と枠にそれぞれコマンドタブで貼り付けて、USBケーブルつないだら設置完了。
f:id:de0:20210101135638j:plain

ドアを開けたらPCの音声がミュートされ、ドアを閉じたらミュートが解除されるようになった。やったね。

ソース

digitalreadで開閉状態が取れるので、それに応じて処理を入れるだけで簡単に出来た。
USBキーボードとして認識させ、状態遷移時にホットキーを送るようにした。
本当はミュートのメディアキーを直接送るつもりでいたんだけど、用意されているサンプルで対応していたのは基本的なキーコードのみだったので、PC側でAutohotkeyを併用して妥協した。

Arduino
#include "Keyboard.h"

//ピン定義
const int buttonPin = 5;
const int ledPin =  17;

//センサ状態用変数
int buttonState = 0;
int prevState;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    //CloseならHIGH
    digitalWrite(ledPin, HIGH);
  } else {
    //OpenはLOW
    digitalWrite(ledPin, LOW);
  }

  if ( (buttonState == HIGH) && (prevState == LOW) ) {
     //閉じられた時の処理 - SHIFT+Alt+Ctrl+c
     Keyboard.press(KEY_LEFT_ALT);
     Keyboard.press(KEY_LEFT_CTRL);
     Keyboard.press(KEY_LEFT_SHIFT);
     Keyboard.press('c');
     Keyboard.releaseAll();

  } else if ( (buttonState == LOW) && (prevState == HIGH) ) {
     //開けられた時の処理 - SHIFT+Alt+Ctrl+o
     Keyboard.press(KEY_LEFT_ALT);
     Keyboard.press(KEY_LEFT_CTRL);
     Keyboard.press(KEY_LEFT_SHIFT);
     Keyboard.write('o');
     Keyboard.releaseAll();
  }

  prevState = buttonState;
  delay(10); //delayなしだと開放時に一回余分に閉じ明けが認識されるので回避
}
PC側(Autohotkeyスクリプト)
+^!c::Soundset,0,master,mute	;ドア閉まったらミュート解除
+^!o::Soundset,1,master,mute	;ドア空いたらミュート

おわり

かなりシンプルに実現できてしまった。
現状特にアイディアはないんだけど、同じ要領でArduinoで使えるあらゆるセンサーとPCが連携できそうなので、他にもいい感じの何かを思いついたら試そうと思う。

枠が空いてたので、この記事は Arduino Advent Calendar 2020 に遅刻で登録しました。
qiita.com

Atmoph Window的なスマート窓もどきを雑につくる (余ったAndroidタブレット+WindowSwap)

動機

Atmoph Windowという世界の風景を表示する製品がある。良さそう。
atmoph.com
コンセプトはなかなか魅力的なんだけど、本体が4.5万する上に毎月980円の課金が必要になる。強気の本体価格なのに加え、無けりゃ無くても困らない置物を成立させるために永続的に毎月千円吸われ続けるのは個人的には結構抵抗がある。

高品質な風景の撮影コストの回収にはある程度仕方ないんだろうなとは思うけど、ハードウェア的には要は画面に動画流せりゃ何でも成立しそうに見える。
いい感じの動画ソースさえあれば、適当に有りもの組み合わせて代替はどうとでもなりそう。

window-swap.com

探してみたらうってつけのWebサービスが見つかった。

window-swap.com
窓からの風景を集めて流してくれるWebサービスで、ユーザ投稿の動画を追加していっているとのこと。

単にブラウザでページ開くだけで済んでしまう。動画のスクレイピング等も視野に入れて探していたんだけどそれさえも必要無くなった。

Fully Kiosk Browser

play.google.com

フルスクリーンでオートリロードできるブラウザなら何でもよい。以下の2箇所設定して飾ればもう完成。

  • Web Content Settings > Start URL
  • Web Auto Reload > Auto Reload on Idle
    • 3600 sec (リロードで別の風景に切替) ※追記:今の仕様だと不要

MacroDroid

必要な内容はもう上記だけで9割方終わってるんだけど、夜中光られると邪魔なので、照度センサーの値を参照させて照明に連動してもらうことにする。

play.google.com
各種トリガーをもとに自動制御するアプリ。照度以外の制御もいろいろ可能。

以下のマクロを追加

  • 光センサー ~まで減少 5.0lx → 画面をOFFにする
  • 光センサー ~まで増加 20.0lx → 画面をONにする

以下の設定を変更

  • 設定>トリガーオプション>光センサートリガー>光センサーのバックグラウンド更新間隔
    • 2分 (無効以外なら何でもよい)

装飾

黒縁のままでも行けるが若干味気ないので、物理的に何か外装を盛ることにした。
ダイソーにかなり丁度いい木製ケースがあった。これに適当にケーブル穴削って入れたら終わった。完成。
タブレットauのQua Tabを使った。それなりのサイズの画面のAndroidなら何でもよい。
f:id:de0:20201228201507j:plain
f:id:de0:20201228205247j:plain
(黒いケーブルが目立つので後でカバーで隠した)

試してないけど出来そうなバリエーション案

おわり

HW品質はさておき、WindowSwapが良いおかげでほぼタダみたいなコストで簡単にそれっぽいものが出来るので、妥協の選択肢としては有りかもしれない。

追記:外装を変えた
de0.hatenablog.com

ディスプレイ下に棚をつける(MOUNT-KB03)

背景

アームでディスプレイを移動できるようにし、ベッドと机でPCを使いまわしている。
画面の移動をする際一緒に入力装置等の小物の移動も必要になるので、画面と一緒に移動できたら便利ではと考えた。

買った製品

画面の上に棚を作る製品はいくつか見かけるが、移動を前提とはしていなさそうだし、使い勝手もあまり良くなかった。

独立アームでなく画面と同一のポジションかつ下に付けられるやつ無いかなと探してみた結果、1つだけ見つかった。

MOUNT-KB03 <br><br>VESA Keyboard Tray - Blackvivo-us.com


国内だとやたら高いので、amazon.comから買った。送料差っ引いてもこっちのほうが大分安い。
www.amazon.com

駄目だった

便利そうなのに各社から売られてないのには理由があったことが分かった。いざ着けてみたらアームが重さに勝てないのだ。
それなりに強力なはずのエルゴトロンのLXアームを使用していたんだけど、それでも画面がお辞儀してしまった。

単純な重量合計的にはアームの耐荷重を一応下回ってそうだが、トレイの重さがそこそこあるのと、それによって重心がかなり前方に移動するのが悪いっぽい。

パワー解決

キーボードとトラックボール2つ買ったほうが絶対に安いんだけども、何だか無駄が多い感じがするので避けたかった。
使わずにしまっておいて置くのも邪魔なサイズなので、どうにか使えるようにすることにした。

ある程度の可動域があるアームの中で普通に手に入るアームとして耐荷重最高なのは、エルゴトロンのHXアームらしい。
結構いい値段したが、半分意地みたいなもので結局ポチった。完璧に損切りに失敗している。

www.ergotron.com

結果

成功した。色々載せてもちゃんと角度を保持してくれた。
f:id:de0:20201120081648j:plain

移動がまとめてできるのはもちろん、乗せたままでも普通に使える。(ただ体勢的には左右にあったほうが絶対楽なので軽く使う時に限る)
f:id:de0:20201120081129j:plain

ベッドの周り全方位に物が置けるようになった。
f:id:de0:20201120081054j:plain

特に計算してなかったけど、やたらかさばるPHOENIXWANの上がいい感じのスペースとして収まった。
f:id:de0:20201120081352j:plain

プレイ時のキーボード置き場としても使える。専コンだけで完結しないちょっとしたテンキー操作等もそのまま出来て便利。
f:id:de0:20201120081535j:plain

ちなみに壁にパンチングボードを付けた。大掛かりな工事とか要らずピン留めで割と簡単に設置できる
各種コントローラ、ヘッドセット、Switch本体、Viveなんかがいい感じに収まってよろしい。

余談:ゲーミングモニタ良い

以前はPhilipsの大型の60Hz4kモニタを使っていたが、 高リフレッシュレートを一回体感したら二度と60Hzには戻れない体にされてしまった。
専コン整えてそれなりにプレイ回数増えたこともあるけど、画面変えてからというものスコアもクリアもいろいろ伸びてくれた。段位で言うとDP発狂九段やInfinitasDP皆伝を抜けられたりした。

大画面高リフレッシュレートの製品の選択肢はかなり狭い。大きすぎるLG製のやつ以外ほぼ国内未発売で、海外向けで出ている丁度いいサイズの製品もピクセル配置がRGBでなくBGRだったりして完璧なものがなかった。
アーケード準拠の画面サイズへのこだわりは捨てて小さい画面になったが、結局のところ特に違和感なく遊べた。
いろいろ試した結果最終的に27GN950-Bに乗り換えた。機能全部盛りかつ高解像度で強い。まだ未発売だけどPG32UQXなんかも良さそう。

おわり

単に板一枚浮かせるだけのためにしてはどう考えても必要な条件がきつすぎる。
稼働範囲の狭い半固定寄りのVESAマウントであれば普通に使えそうだけど、それならトレイ専用のアームを別に付けたほうが良い気がする。

得られたものに満足はしているしそれなりに便利にもなったが、コスパは最低だった。
既に強いアーム持ってる人には良いんじゃないでしょうか。

IIDX ULTIMATE MOBILE用PS2専コン変換器(PHOENIXWAN対応)の作り方

PHOENIXWANを買った。

アルティメットモバイルは、以前メルカリで買った変換基板+初代純正専コンでそれまでプレイしていた。PHOENIXWANも同様に使えるだろうと予想していたら、実際には入力を受け付けてくれなかった。困った。

理屈上は認識できるはずに思えるんだけど、変換器のソースが公開されてない以上動かないまま対処のしようがない。
どういう仕組みでアプリに認識させているのか不明ではあったものの、純正コンではちゃんと認識する現物があるので、これをヒントに自分で作り直してみることにした。

結果

できた。

作り方

全体的にかなり素直な方法で作ることができた。特殊な要素はデバイス情報指定くらいしかなかった。

流れ
  1. PS2コントローラの端子とPro Microをはんだ付けする
  2. バイス情報を書き換える
  3. スケッチを書き込む
  4. 適当に外装を整える
作成のポイント
  • プロダクト名、ベンダ名、ベンダIDを揃えればUltimate Mobile側で認識される
  • PHOENIXWANは、PSXNewLibを使えば認識できる

以下に詳細を書きます。

材料

  • Pro Micro または何かしらのArduino
  • PS2コントローラのメス端子(を部品取りするためのUSB変換器)
  • リード線
  • はんだ
  • 保護ケースなど(任意)

今回5V版のPro Microを使って作ってしまったんだけどこれは選択ミスだった。
一応動いてはいるけど、PS2コントローラの電圧仕様的には本当は3.3V版の方を使ったほうがよさそう。作り終わってから気づいた。

なお、PS2端子の代わりに皿とスイッチ7個を直接繋ぎ、ソースを多少調整すれば専コン自体が作れる。(と思う)

PS2コントローラの端子とPro Microをはんだ付けする

PS2の変換器を分解してコネクタ部分だけ入手し、コネクタのピンとArduinoのピンを接続する。

PS2のピン配置については以下のページが分かりやすい。基板側はGNDとVCCの位置だけ気をつければ残りの繋ぎ先はどこでも可。
darekasan.net
f:id:de0:20200903222456j:plain

バイス情報を書き換える

boards.txtを編集して、エントリーモデル相当のハードウェア扱いとして書き込むように各パラメータを書き換える。

Pro Microの場合はboards.txtは以下にある。

C:\Users\username\AppData\Local\Arduino15\packages\SparkFun\hardware\avr\1.1.13\

以下の値を指定したらUltimate Mobile側でUSBコントローラとして認識された。

promicro.build.usb_product="beatmania IIDX controller Entry Model"
promicro.build.usb_manufacturer="Konami Amusement"
promicro.build.vid=0x1ccf

スケッチを書き込む

以下のスケッチをPro Microに書き込む。

皿の挙動が独特(回すたびX軸を移動し端でループする)なのでそこだけは追加が必要だったが、それ以外はライブラリ2つのサンプルスケッチのパッチワークでほぼ済んでしまった。

PHOENIXWANのPS2が何か特殊なのか、PSXLibraryでは入力を拾えなかったので、代わりにPSXNewLibを使ったらうまくいった。

//https://github.com/NicoHood/HID
#include <HID-Project.h>

//https://github.com/SukkoPera/PsxNewLib
#include <DigitalIO.h>
#include <PsxControllerBitBang.h>

//皿の移動幅(値は適当)
const int scr_sensitivity = 1000;

//ピン配線に合わせる
const byte PIN_PS2_ATT = 20;
const byte PIN_PS2_CMD = 5;
const byte PIN_PS2_DAT = 3;
const byte PIN_PS2_CLK = 18;

PsxControllerBitBang<PIN_PS2_ATT, PIN_PS2_CMD, PIN_PS2_DAT, PIN_PS2_CLK> psx;

int scr_pos = 0;                //皿位置
unsigned int data;              //入力情報

void setup() {
  Gamepad.begin();
//  Serial.begin(9600);
}

void loop(){
  psx.begin (); //たまに認識が外れてるっぽいので毎回beginさせとく
  psx.read ();

  data = psx.getButtonWord();
//  Serial.println (data);

  //皿
  if(data&PSB_PAD_DOWN){
    scr_pos -= scr_sensitivity;
    if(scr_pos < -32768) scr_pos = 32768;
    Gamepad.xAxis(scr_pos);
  }
  if(data&PSB_PAD_UP){
    scr_pos += scr_sensitivity;
    if(scr_pos > 32768) scr_pos = -32768;
    Gamepad.xAxis(scr_pos);
  }

  //七健
  if(data&PSB_SQUARE)   Gamepad.press(1); else Gamepad.release(1);
  if(data&PSB_L1)       Gamepad.press(2); else Gamepad.release(2);
  if(data&PSB_CROSS)    Gamepad.press(3); else Gamepad.release(3);
  if(data&PSB_R1)       Gamepad.press(4); else Gamepad.release(4);
  if(data&PSB_CIRCLE)   Gamepad.press(5); else Gamepad.release(5);
  if(data&PSB_L2)       Gamepad.press(6); else Gamepad.release(6);
  if(data&PSB_PAD_LEFT) Gamepad.press(7); else Gamepad.release(7);

  //E1-E4(アプリでは使えない)
  if(data&PSB_START)    Gamepad.press(9); else Gamepad.release(9);
  if(data&PSB_SELECT)   Gamepad.press(10);else Gamepad.release(10);
  if(data&PSB_TRIANGLE) Gamepad.press(11);else Gamepad.release(11);
  if(data&PSB_PAD_RIGHT)Gamepad.press(12);else Gamepad.release(12);

  Gamepad.write();
  
  //認識頻度の調整
  delay (1);
}

認識周りとdelayやscr_sensitivityの値は調整の余地がありそう。ノーツ多めの譜面だと若干ラグってるようなそうでもないような気がする。

純正初代専コンも含め、PHOENIXWAN以外のPS2コントローラももちろん使えるし、PCに繋いでUSBコントローラとしても使える。(使うことはないけど)

適当に外装を整える

基板も配線も剥き出しなので、適当にホットボンドで固めたりケースに入れたりしたら完成。
f:id:de0:20200904100506j:plain

おわり

アプリ側がUSBデバイスの制限をかけずかつキーコンフィグ可能になればわざわざこんな回りくどくて面倒くさいことしなくて済むので、もうちょっとどうにかしてほしい感じはある。
そもそもINFINITASが同じくらい選曲できればパーフェクトなんだけど、そんな日はたぶん来ないし、Ultimate MobileがDPに対応することもキー音出すことも多分無いので、それぞれ抱えている重大な欠点はこれからもずっと改善が見込めなそうなままのが困ったところだなあと思う。

PHOENIXWANがUltimate Mobileモードを追加してくれると助かるんだけども、他社のベンダIDを勝手に振った機器を量産して売る形になってしまうのであまり期待できないかもしれない...と書いている途中でPHOENIXWANのVIDが気になり調べてみたら普通に1ccfだった。その辺あまり気にしてないっぽい。いいのか?

メルカリのbeatmania IIDX ULTIMATE MOBILE用PS2専コン変換器がすごい話

背景

モバイル版のIIDXとして、ULTIMATE MOBLEというアプリがリリースされている。スタミナ制の基本無料で、課金すれば無制限で遊べる。
p.eagate.573.jp

タッチパネルでも遊べはするが当然高難度をプレイするのは厳しい。そうするとやっぱり専用コントローラが欲しくなるところだけど、公式のエントリーモデルしか使えない。(ということになっている)

既存の専コンをUSB変換して接続し、Octopusを使って画面上のタップに変換するという方法もあるにはあるが、隣のレーンを巻き込んだり反応が悪かったり連皿が入らなかったりする。

専用の変換器が有ればいいのにと思いつつ調べてみたところ、なんとそれっぽいのが実際にメルカリに売っていた。
出品ページ以外の情報がインターネット上に一切見つからず、本当に使えるのか半信半疑だったが、これで上手くいくなら儲けものと駄目元で買ってみた。

結果

完璧だった。おすすめです。

※追記:PHOENIXWANのPS2端子接続では入力が認識されなかったので注意。同じPS2入力なので使えることを期待していたがどうやら駄目らしい。どういう理屈なのかはよくわからない

品物

f:id:de0:20200524120050j:plain

PS2コントローラのメス端子に、自作キーボードとかでよく見る普通のPro Microが繋がれている。かなりシンプル。
出品者の手作りなので、時期によって端子一体型だったり剥き出しだったりクリアケース入だったりと外観は変わってくる。

INFINITAS用の変換器の作り方なんかは探すと公開情報がいくつか見つかるが、Ultimate Mobile用の対応方法については全くの謎なので、そのためのArduinoスケッチは作者の独自開発と思われる。すばらしい。
(デバイスID揃えるとかで動いてくれるんだろうか。方法が気になるが謎)

※追記:認識のさせ方わかった

使い方

適当なUSB micro-TypeCケーブルでAndroid端末に繋ぐだけで、驚くほど本当に普通に使える。
どういう仕組で認識させてるのか不明だが、ちゃんとUSBコンとして認識するし、鍵盤も皿もしっかりと反応する。

f:id:de0:20200524132226p:plain
端末に繋がっていると、選曲画面で"今日のイチオシ"の左にUSB接続のマークが表示される。
Ultimate Mobile公式の説明には、専コンはBluetoothを使うとしか書いておらず、有線については何の説明もないが、実際は使える作りになっているっぽい。なにそれ。

反応の抜けも感じられなかった。皿曲や☆12のエクハも普通に出来ているので、多分入力は全部通ってると思う。

PC

PCでもINFINITAS用の変換機として使えるようになっている。(皿の感度は違う)
f:id:de0:20200524134839p:plain

Start/Selectの同時押しで別キーとして使える。(出品画像より)
f:id:de0:20200524132209j:plain

多分この機能のために、HIDだけでなくキーボードとしても認識している。
f:id:de0:20200524134841p:plain

端末依存のハマりポイント

Oppo Reno Aを使っている。以下の点でうまく行かなくてちょっと焦った。

OTG接続の有効化

節電のためかUSBポートの機能をデフォで絞っているらしく、"OTG接続"をオプションからONにしないとデバイスが認識されない仕様だった。
10分使わないとまたOFFに戻るので、専コン使う度に有効化が必要。

外部出力

モニタに出力してプレイしようと思ったが、どうやっても映像が出力されなかった。よく調べてみると、そもそもこの端末は有線出力非対応だったらしい。
大画面でやる環境組みたい場合はこの辺りの対応も注意したほうがよさそう。

購入先

この出品者から4000円弱で買える。
https://www.mercari.com/jp/u/376379913/

ArduinoPS2変換のHW代だけで2000円くらいはするだろうし、UltimateMobile対応部分がオンリーワンなのでかなり良心的価格な気がする。

おわり

究極携帯は専コンの準備がハードル高かったんだけど、これで課題が一つ解消されてしまった。
INFINITASと比べて、キー音が無いこととDPに非対応なことくらいしかもう目立った欠点がない気がする。渋すぎる解禁作業の必要もなく最初から物凄い曲数があるのもうれしい。

個人制作なので常時買えるものでもないけど、Ultimate Mobileやる人はもし売ってたら手に入れて損はしないかと思う。


※追記:その後PHOENIXWANのために改めて自分で作った
de0.hatenablog.com

財布の圧縮を考える

現金を使う場面がかなり少なくなっていることに気付いた。
クレジットカードとSuicaとPayPay(とPASELI)で大抵どうにかなるので、現金の出番はほぼ外食くらいしかない。最近は外食も小さめの個人商店でもPayPayは使えたりする。

財布一切持たないって所までは流石に不便なので踏み切れないけど、とりあえず持ってさえいりゃいいやという感じにはなった。
代わりの財布についていくつか試してみたので、そのあたりの試行錯誤の記録を書きます。

要件

  • お札が10枚弱入る
  • 小銭が15枚以上入る
    • 1円10円100円が各4枚、5円50円500円が1枚
  • カードが4枚以上入る
    • kyash、P-one Wiz、住信SBIキャッシュカード、免許証
  • 株主優待券がそれなりに入る
  • 家の鍵が1本入る
    • 常時持つ分はキーケースを省略したい
    • 車や自転車の鍵は使うときだけ別持ちでよい
  • 接触IC決済対応は不要
    • 全部携帯でやる
  • 見た目やブランド等はどうでもいい
  • ズボンのポケットに入る
  • なるべく小型軽量である
  • 極端に使い辛くない

これまでの財布

f:id:de0:20200115181353j:plain

大量のカード収納と大口の小銭入れを持ちつつも小さめにまとまっている財布。お札の収納が独特でちょっと癖があるがすぐ慣れる。
1箇所の蓋を開くだけで中身に全部触れるのでかなり使いやすい。けっこうお勧め。

いつ買ったかもう覚えてないけど、同モデルのP25から乗り換えつつ多分計7年くらいは使ってた気がする。
使うカードがだんだん減ってきたので、せっかくのカードポケットが年々スカスカになってきていた。

M+ Piastra

ここから、移行先として試したもの。
f:id:de0:20200112211905j:plain

ポケットに突っ込む用の薄型財布。この手の財布を調べるとまず出てくる abrAsus 薄い財布 に似ているが、若干大型化しコインケースの位置を逆転させた感じになっている。

お札は革一枚の上に突っ込んでるだけで、蓋(ただの革)を閉じるのはポケットの力でやれという割り切り設計で、サイズも若干大きめなので、ちゃんと優待と札の両方を収納しつつ薄くまとまった。
小銭入れが内側なのは薄さの面で不利なのではと思ったけど、厚みは札の折り目と同じ側に集中し外側の端は薄いままなので、ポケットへの突っ込みやすさではこっちのほうが良さそう。

普通の財布系の中ではこれは悪くない選択肢だった。しばらく使った。

他の候補


似た配置でタイベック製の財布があり、こちらは厚み3mmらしい。薄さを追求するならこっちのほうが良いかもしれない。

輪ゴム

f:id:de0:20200112214239j:plain
二つ折りパターン
f:id:de0:20200112214404j:plain
四つ折りパターンと優待束
Piastra財布もこれはこれでなかなか良かったんだけど、

  • 使用頻度が違いすぎる株主優待まで1つにしておく必要があるのか
  • 小銭どうにかしたらもっと薄くなるのではないか
  • そもそも別に財布要らんのではないか

という考えが出てきた。

とりあえず極端なところから調整するかと思い、次の財布候補(もう財布でも何でもないが)は輪ゴムになった。
薄さ軽さの面ではどう考えても間違いなく最強である。使い勝手も意外と悪くはなく、阻むものが何も無いので探しやすい。
普通の輪ゴムだと劣化するので、モビロンバンドを使うとよい。

小銭の扱いがどうしようもないのが最大の欠点。札の端も曲がる。

コインホーム

f:id:de0:20200112220050j:plain

小銭をポケットに突っ込むのは流石に使い辛すぎるのでコインホルダーを使ってみることにした。

これはストッパーの付いたプラスチックの塊で、金額ごとに各5枚ずつはめ込んで携帯することが出来る。金額分けされており枚数もすぐわかり取り出しもしやすいので、会計時の使い勝手は最高だった。

ただ、支払いまでは良いんだけど、お釣りをもらう都度一枚一枚はめていく作業が必要になる。また、当然だけど硬貨5枚分以上のそこそこの厚みがあり思ったほどコンパクトではなかった。
上限は5枚じゃなく4枚でいいし5円/50円/500円は1枚ずつ入ればいいので、限界まで削ったバージョンがほしい。

ほかの候補


カードサイズで薄くまとめるならよさそう。もう売ってないけど。


500円が若干取りづらそうだけどこういうのもあった。

ジップロック

f:id:de0:20200114192901j:plain
中身は最高に見やすいが小銭が取り出しにくかった。もっと大きいサイズのを使えば解決はしそうだけど。
見た目は気にしないつもりだったが、会計時にここからジャラジャラもたもたやってるのは流石に微妙な気がした。

これを使うなら小銭に限らずお札も一緒に入れてよさそう。サイズ的には小銭と一緒に収納できるタイプのほぼ下限のはず。

名刺入れ

f:id:de0:20200115184055j:plain
ある程度の薄さ小ささがあり開口部が広いので、小銭入れとして使えるのではないかと思い試した品。
使い勝手は悪くはなかったけど、小銭が擦れる音と壁に当たる音が発生するのでやたらうるさい。じゃあ革製にしたら良いのではと思ったが、革製の名刺入れはこういう開き方はしない。

abrAsus 小さい小銭入れ

f:id:de0:20200114191222j:plain

コイン15枚と鍵の入るキーホルダー。かなりの小ささとそこそこ妥協できる使い勝手がある。妥協できる範囲というだけで別に特別使いやすいわけではない。
小銭を放り込む感じにはならず、隙間に押し込んでいく必要はある。

他の候補

細長でなく正方形タイプのこういうのもよさそう。

カードケース

雰囲気で株をやっている。少しずつ買い足し続けていて100銘柄くらい所持している。雰囲気でやっているので、近場で使え還元率が悪くない飲食店の優待が付いてくる株なんかには特に釣られがちである。
汎用性のあるギフトカードでくれると助かるんだけど、大抵はその店でしか使えない優待券なので結構枚数がかさみ財布を圧迫していた。

f:id:de0:20200112210921j:plain

たまに特定の店に入った時にしか使わないので現金やカードとは利用頻度が全然違い、別に全て財布内に収めておく必要もないことに今更ながら気付いたので、優待だけ分割することにした。
一覧で探せるので、使う時ペラペラめくって対象の店の券を検索する必要がなくなって便利。面積がだいぶ増えるが、尻ポケットや上着のポケットに入るレベルなので許容範囲だった。

メインカードや紙幣もここに入れて、カードケース+小銭入れだけってのもありかもしれない。

Ichione Cow

f:id:de0:20200112220254j:plain

輪ゴムの代替として、小銭入れが一体化していると便利なのではと考えて買ってみた品。
お札もカードも小銭も確かに入りはするんだけど、札とカードの向きが逆のため無駄にかさばり、小銭は隙間から溢れ、サイズも別に薄いわけでもなしと全部中途半端だった。

マネークリップ

f:id:de0:20200112220144j:plain
マネークリップ単品ならもう少しましなのではと考えて一応試してみた。
クリップ分の厚みが増すし、札の厚みが出てくると挟みづらい。おまけにカード何枚か入れたら元の位置に戻らなくなった。取り出しやすさでは勝ってるのかもしれないが、輪ゴムに対する利点が少ないように思う。
枚数少ないなら普通の文房具クリップのほうがマシな気がする。

Mary Lamb マネークリップ

f:id:de0:20200112215725j:plain

カードを板で挟み、紙幣を板裏のゴムで止める財布。別々の収納になった分若干取り出しやすくはなった。
the Ridgeという財布のコピー品っぽい。

ただ、カードを挟む2枚の板に結構厚みがある。それぞれカード2枚か3枚分はあるので、収納する中身よりかさばっており本末転倒感がすごい。
金属製だと他の物を一緒にポケットに入れたときに傷をつけるのも良くない。

Kinzd 輪ゴムカードケース

f:id:de0:20200112210835j:plain

ポケットが付加されたカードサイズ幅のゴムバンド。

輪の中とポケット2つを使いカードと紙幣と小銭を3箇所に収納できる。さらに横向きの小ポケットとキーリング付き。
必要な収納をシンプルながらいい感じに抑えており、輪ゴムよりかなり使い勝手が良くなった。見た目も多少はマシにはなる。
小ささを求めるならこれが答えな気がする。

欠点は、小銭の使い勝手が最悪なこと。ゴムの隙間に挟んでいるだけなので、中身は見辛く、取り出しにくく、入れにくい。また、枚数が少ないとたまに中身が落ちる。

所持品が増えるが、コインホーム(または小さい小銭入れ)を併用するのはまあまあ悪くはなかった。しばらくこの構成を使っていたがサイズと使い勝手が結構良いバランスだった。

SAKU-SAKU コインケース

形状が違う以外は小銭も紙幣も同機能なのに、小銭入れが分離して収納先が別になっているのは使い勝手的にはあんまり良くない。それに、小銭入れも決して大きいわけではないんだけど、ゴム束に比べると相対的には大きく見え無駄を感じる。
じゃあ一体型なら良いのではということでいろいろ探した結果、小銭入れ付きのゴムというかゴム付きの小銭入れがあったので買った。

f:id:de0:20200115184524j:plain

単品で出来る小銭の収納がまともになったのでかなり使い勝手が良くなった。ゴムの部分は2箇所入れられるのでカードと現金で分けて収納可能。カードの幅より小さいので端ははみ出す。

他の候補

厚みが増えそうだが、小銭入れがボックス型の分使い勝手はこっちの方が良さそう。

Nano Boy Pocketwww.jaimiejacobswallets.com
こちらは、カード取り出しベルトが付いてるのが若干便利そう。

現状の構成

優待はカードケースに、現金とカードはゴムバンド付きコインケースに入れて使っている。
f:id:de0:20200115185542j:plain

手持ちの優待が減ってきたら輪ゴムカードケースにしてもいいかなと思っている。
f:id:de0:20200115185027j:plain

おわり

お札を使う時の処理は、1000円を何枚出すかが実質ほぼ全てなので、雑に入れていてもそんなに使い勝手は悪くならなかった。
現金で高額決済する場面は稀なので、5000円/10000円が必要かどうかを考えるのは1000円が足りなかった時くらいしかない。

一方小銭を使う場合は、支払額ZYX円に対し以下の考慮が必要になる。お札と違い3桁分の計算と5の端数処理が要るので、ある程度の見やすさと取り出しやすさが確保されていないと一気にかなり使いづらくなる。
・1円と5円の合計でX円ちょうどあるか
・ない場合、1円が(X-5)枚あるか
・ない場合、X<5かつ5円が1枚あるか

・1の位の支払額<X の場合、Y=Y+1
・10円と50円の合計でY円ちょうどあるか
・ない場合、10円が(Y-5)枚あるか
・ない場合、Y<5かつ50円が1枚あるか

・10の位の支払額<Y の場合、Z=Z+1
・100円と500円の合計でZ円ちょうどあるか
・ない場合、100円が(Z-5)枚あるか
・ない場合、Z<5かつ500円が1枚あるか

もっと適当に支払って小銭溜まったらたまにセルフレジとかに全額突っ込むという手もあるにはあるけど、財布を小さくしたせいで小銭が増えるというのは目的を見失っている。
小さくするのは結局使い勝手をどこで妥協できるかだと思う。ここまで極端な小型化をせず普通の財布を選ぶにしても、お札やカードは適当に入れときゃ使えるけど小銭入れはある程度マシな感じのを選んだほうがよさそうな気がする。