ラズピコでPS2対応の弐寺専コンをつくる
イジョケンむかしばなし
PS2で つかえる 専コンがいた
BMSで つかえる 専コンがいた
むかし USBでは 専コンは みんな
ただの ジョイパッドだったから
すきなように なのり
すきなように はなす
それが ふつうのことだった
10ねんまえの あるひ
むげんを なのる ゲームが あらわれた
PS2と ちがう おさら
VID PID の とびらの むこう
そこまで 15ねんの あいだ つくられてきた
専コンたちは すぐに いきばを うしなってしまった
15ねんで おおくの 専コンしょくにん たちは
すでに そのしごとを はなれて しまっていた
専コンたちは 対応基板を えることも なく
しずかに しんでいった…
いくたの しかばねの うえにある しんじだい
DJ DAOと なのる えいりきぎょうは
このよのはるを おうかしていた
ふぇにっくすわんは とても いい 専コンだ
でも 10ねんまえから みすてられた かこの 専コンたちは
かいかえて すててしまうか あやしい きばんに いれかえるしかない
このじだいは ほんとうに しあわせなのだろうか?
はじめに
シンオウむかしばなし改変で書こうとしたら原型が無くなりました。どうもkagura1050です。今回はなんと数か月ぶりの記事で済んでいるらしい。
この記事は「Raspberry Pi Advent Calendar 2025」の10日目の記事です。
https://adventar.org/calendars/11389昨日はあっきぃさん、明日は(null)さんです!
え!?アドカレ参戦は2年振り!?ウッ!
まあグダグダ書きましたが、古めの弐寺の専コンを持っていても、INFINITAS(PCで遊べるサブスク版beatmania IIDX。一部の主要な操作が公式コントローラーでないと行えない)環境を前にすると
- コントローラごと買い替える
- ただの特定のVID/PIDとPS2コンのプロトコルしゃべるだけの物体(よくわからん企業のようわからん基板(メインMCUの刻印が削ってある)とハーネス(18AWG用圧着端子に24AWG))に合計数万円出す
- ようわからん同人ハードを買う
しかないどう考えてものヤだよねというやつです。そもそもそれがBadUSBでない確証もないじゃんというのも。

OSSだとINFINITAS対応はちょいちょいあるんですが、PS2(PlayStation2でCS版が昔出ていた。版権曲や削除曲なども遊べるため一定の需要がある)では使えないのが多い。
今回はPS2対応のそれをPicoで、OSHWで作りましたという話です。
あ、ちなみに話の内容としてはPS2対応が10割です。INFINITAS対応は適当にソース読んでください
beatmania IIDXって?
今回目指すところ
既存の専コンをターゲットに、
- INFINITASで使えて
- PS2でも使える
二つの機能を備えた、RP2040-Zero搭載基板を制作していきます。
今回のターゲット
おそらくいま中古価格が一番安いであろう専用コントローラーであるところの「ビートマニアIIDX専用コントローラー」(RU029)をターゲットとして開発していきます。
安いからというか、自分が今メインで使っているからというのもある。
現状
2023年ごろに自作した基板を乗せています(執筆時点でもう実装まで終わっているので、「いました」が正しい)。
INFINITASにこそ対応していますがPS2には対応できていません。
ので、なんと我が家には複数台専コンがあります(ひとつはPS2用)

←PS2用 INFINITAS/BMS用→
PS2コントローラー対応は難しいとされている?
ひとことでいうと「SPIスレーブ」というわりとサンプルの少ないソレだから。
しかもデータ通信がトランザクション単位ではなく、トランザクションの1バイト目に送ってきたデータにより返すデータもデータ長も変わるし、ACKという独自信号が生えているというそこそこめんどくさい仕様。
しかもプロトコルもあまり明文化されておらず、PS2実機でしっかり認識させるには割と作りこんだ実装をしないといけません。
して、ネットの海を彷徨った結果おととしぐらいに見つけたのがコレ。
Emulating a Dualshock 1 controller in digital mode.
byu/darkgiuseppe inpsx
コメント欄に登場している野生のオタクが、AVR向けのシンプルな実装を公開してくれていました。
今回はこれをベースに実装を進めていきます。
プロトコルの解説
まず、PS2コントローラのきほんは
- 周波数250KHzで
- Mode3でLSB Firstの
- Slaveが1バイトごとに/ACKを返す必要がある
- SPIで
- DAT(MISO)と/ACKはオープンドレイン
です。
波形としてはこうなります(2バイト通信の例)。

ふつうこういうことをやるならSPIペリフェラルを使いますが、今回はまたRP2040で殴ってしまおう、ということで以前失敗した「core1を使ったポーリング」にチャレンジしてみました。(ペリフェラル触るのがめんどかったとも言う)
以下、通信内容の説明です(適当に書いたらなんか硬い文章になった)
TL;DR : これ通り実装してうごきました
通信内容
※本章で登場するMUST, SHOULD等の単語の意味はRFC2119/8174に従うものとします
実はコントローラはメモリカードと同じバスにつながっているのですが(!)、そのおかげかややインテリジェンスなコマンド構成となっており、パッドはそれに対して正しく応答する(または、応答しない)ことが求められます(MUST)。
情報元 : ps_jpn.txt
フェーズ1 検出
このフェーズでは、PlayStation本体(以下、本体)がコントローラ(以下、パッド)が接続されている/いないことを検出します。

/ATTがアサートされた後、データ01hを受け取った場合、コントローラは100μs以内に/ACKを2μs以上引き下げる必要があります(MUST)。引き下げない場合、本体はパッドが未接続であるとみなします。
このとき、データが01hでない場合はパッドは/ACKを引き下げてはいけません(MUST NOT)。(参考:81hはメモリカード)
本体が/ACKの引き下げを確認した場合、/ATTがアサートされたまま次のフェーズに移行します。
Tips: 図に示したようにここではDATは厳密には不定である(パッド/メモリカードどちらも駆動していない)。本体側を実装する場合はきちんとプルアップするなど適切な対応をすること
フェーズ2 応答IDの報告
このフェーズでは、パッドが本体に応答IDの送信を行います。

応答IDは2バイトからなります:
- 1バイト目 上位4bitがコントローラ種別、下位4bitがデータ長/2
- 図ではコントローラ種別 = 4, データ長 = 2バイトとなる
- 2バイト目 5Ah固定
1バイト目の下位4bitが0であった場合、データ長は32バイトとみなされます。
ここで応答IDが得られた場合、本体はATTをアサートしたまま次のフェーズへ移行します。
フェーズ3 データの転送とトランザクションの終了
このフェーズはトランザクションの最終フェーズです。
実際にパッドからのデータ転送を行います。

ここでは本体はデータ長分の00hを送信し、それに合わせてパッド側はボタンデータを送信します。
送信データにおけるボタンの対応は以下の通りです。(0 = 押下)


パッド側は最終バイトの転送後、/ACKを引き下げないことができます(MAY)。また、本体側がデータ長以上の転送を行ってくる可能性を考慮すべきです(SHOULD)
本体側が(データ長ぶんの転送終了、/ACKの無応答等をもって)転送終了を判断した場合、/ATTがデアサートされてトランザクションが完了します。
Tips: もちろん本体側もデータ長以上の転送は行わないべき(SHOULD NOT)


基板
して、ソフトができたら次はハードです(逆で、実はハード先行で実装していた)
KiCADでざっくり作って

JLCに発注して

実装!

完成
IIDX CS 3rd/9th/DD, beatmania 2ndMIX/YEBISU Mix/3rdMIX/4thMIX/GOTTAMIX、beatoraja、IIDX INFINITASで動作確認しました。
リポジトリはこちら!
感想
やっぱりRP2040は速い!
RP2350も今度使ってみます。

そういえばこの記事は3939文字らしいです。初音ミクV2はいいぞ!
Project DIVA Mega39's+の専コンもいまらずぴこで作ってるので、そのうちブログに書いたりGitHubに放流したいね!
明日Sparkle Shower!?Pinky Crushの思い出&十段取るまでの記録
beatmania IIDX 33Sparkle Showerは2025年9月17日水曜日稼働!!!!!!
こんばんは。DJ KUR4GE(DJ GEH1N*)です。
いや~今作も終わりましたね!え?水曜日だろって?私は金曜日しかやらないんですよ
↑を読んでないよって方はぜひ読んでからどうぞ。
今作の思い出
1. 名実ともにDJ GEH1N*に

はい、DJ GEH1N*になってしまいました。
元はといえば身内のDiscord鯖で「くらげ下品」というゴママヨと、その略称である「下品」が「自分が好きそうなケモノ/マスコット/ロボキャラ」もしくはそれらに対して抱く劣情などを指す言葉として擦られまくっていまして…
それを語呂が良いなとDJ NAMEにしたら一作完走してしまいました。DJ GEH1N*です。
まだDJ KUR4GE名義の名刺90枚ぐらいのこってるのに…
2. 十段合格

受かりました!というか最終日に記念受験したら受かってしまいました
ほかげ抜けたら思ったより地力系で内なるイジョケン力で何とかしてしまった感じ、あり 来作ちゃんとした癖譜面来たら即まんくっちです
実はえぬぜも今作で十段受かってんすよねえ、今回もえぬぜに引っ張られちゃったゲヒねえ~

3. ライバルとエンカ

予告?通り、かろんとエンカしました。これでみうちーむ全制覇!
ちょうど11月頭に東京に行く用事ができたため、午前中をゲーセンに割き、GiGO35F(高層ビルやねえ)で弐寺をプレイして一緒に飯を食うなどしました。
東京狭すぎて、怖いです…♡ VRでもまたお会いしましょう。
あとこれで一緒に飯を食ってないみうちーむがげんどるだけになりました(昨年の関けもでえぬぜとは飯を食っているため)。スパシャではお前と会って飯を食うぞ、いいな







4. DIVA ACに本格復帰

え?弐寺関係ないって?そうだよ!関係ないよ!
DIVA ACに本格復帰(デビュー?)しました。初音ミクV2はいいぞ!V3以降はNFMです
ポジネガミステイカーズ(V2 Edit)収録お願いします!!!
ACやりこんだせいでPSPできなくなった
5. アリーナB3

アリーナが楽しくなってきました。いつのまにかB3になりました。
かんたんな11とか10でボコボコに負けるのに物量系/高速系で1~2pt獲っては8とかの単発でちぎっていくへんなひとです。
B2昇格戦も一回踏めたし来作はそこらへん目標かなあ
Pinky Crush 総評
最近RESIDENTの良さに気づきつつある。デフォ曲は良かったけどイベントがぱっとしない印象でした。同率2位のRESIDENT/EPOLISに次いで4位。
十段の取り方
発初とsl1取ってslと★で物量耐性つけて殴ってください 皿はお祈り
明日Pinky Crush!?EPOLISの思い出&赤段位取るまでの記録
えっ!?もうPinky Crushが稼働してるって!?!?
うるせえ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
…こんばんは。DJ KUR4GE(DJ GEH1N*)です。
というわけで駆け込み(大遅刻)で今作のまとめです。
↑を読んでないよって方はぜひ読んでからどうぞ。
今作の思い出
1. 九段が取れた

俺も赤段位!?前回二続きタイトルの元ネタになっている赤段位になってしまいました。音ゲーマーかもしれません。
段位でなんと12地力Cなどというとんでもない難易度の譜面をやらされます。アホやろ
前作は自分が最後の八段として残ってしまって受けたんですが実は今回も似たようなもんで、ずっと八段だったえぬぜが受かったので気合で地力上げて(乱ノック)1週間で合格しました。やはり持つべきはライバルです。
えぬぜ、今作も俺を牽引してくれ
2. ほし12初クリア

えっ?私がほし12にランプを!?(胡散臭い広告)
ついてしまいました。音ゲーマーかもしれません。
前作末期から手が届きそうで。実際ずっとLv12ランプっていうのは目標にしていて、今作はじめになんとかつけられました。
今ではこんなにランプがついてしまいました

11の地S+は苦しくて苦しくてどうにもならないのがばかりですが、12のランプは12のランプです。うれしい。
3. ライバルとエンカ

今回はえぬぜでした。多分今作はかろんと会うことになると思います。
本当に良きライバル カスBMS作るのだけはやめてほしい



EPOLIS 総評
EPOLISフォルダをまじでほとんど触らなかった。機能面では色々追加されて文句なし最強!
ZEROIN ON THE LIGHTとACT∅とCADENZAと惑星鉄道とLevel 5しかないバージョン
キャストアワー最強からかわらず。小指寺に期待。
X79-SS "IVY BRIDGE OVERDOSE"
皆さんは考えたことがあると思います
小さいマシン(mATX)でいっぱいコアを積みたいなと
そしてそれはRyzen 9がかなえてくれました
しかしもし...
たったの2万円で...
mATXに24コアを積めてしまうとしたら....?
X79-SSとは
そういうのを叶えてくれたへんたいマザボです。
中国の強火のオタクが作った「ぼくがかんがえたさいきょうのX79マザーボード」。
後にも先にもmATXでDual Socketは世界でコレ一枚なはず(VIAのEdenが2個オンボで乗ってる板とかを除けば)
こちらです

はい、買いました 今年一番の買い物だったと思います
ブロック図はこちら、あまりにもふざけています

解説付き

今回はこいつと出会うまで・入手するまで・手懐けるまでをまとめてみます。
ておくれたやつが作ったておくれたマザーボードとておくれの出会いの物語(適当)
出会い
あれは確か2021年ごろだったと思うんですけど、まあいつものごとくAliExpressを漁っていてですね、何やら最近Dual X79板が小さくなってきてるじゃないかと

ご覧のように縦幅はもう既にmATXを下回っていて、奥行きがE-ATXサイズです
ここで僕は思ったわけです

もし、mATXになれば、スリムケースにも乗るので、前代未聞のマシンが…
いつか来るであろうその日は意外と早く来ました。シレっと20000円台でAliExpressに現れたのは今回主題であるX79-SSです。
この強烈な構成を初めて見たときの衝撃は今でも忘れられません…

が、当時まだ僕は学生で(ロクにアルバイトもしていなかった)こんなものを買う金はなく…(スリムケースも持ち合わせがなかった)Dual、ましてや割高なmATXなど買えるわけもなく、いったんここでX79-SSを追いかける時代は終わります。
そして購入へ
時は経ち自分も社会人に。そんな折に突然友人から譲ってもらったのがこちらのケースです。

これね~mATXが入るんですよね~~~
ってことは?
X79-SSが入っちゃうんですよね~~~~~~~~
24C48T、現状のメインストリームソケットでは不可能かつ前代未聞のmATX Dualがこのスリムケースに!!!!!
X79-SSでイカれたマシンを組んでやるという決意が固まった瞬間でした。
(直前に32GBのRDIMMを100円/本で4本手に入れていて、すぐ64GBにできるのも決め手のひとつだった)
散財、冬ボの向こうに
というわけで何はなくともまず散財です、AliExpressで大量に発注!

CPUはVRMを見て日和ったので(結局後に2696 v2をセットで買うことになるが)8C16T/95Wな2640 v2をチョイス。
マザボはなんか一番安いセラーで買いました。
~2週間後~

というわけで買いなおしたのが冒頭の画像というわけでした。
奮闘
さて届いてからというものまず手懐けるのが大変です(いろいろ)
事前に発注しておいたトップフロークーラーがデカすぎてつかない(!)
というわけで知り合いに3Dプリントで急遽マウンタを刷ってもらってキメラ構成で検証開始です


ところでこのオープンフレームも友人が中華通販で買ったやつです
問題その1 SATAが死んだ
文字通りです。買って1週間で何も認識しなくなりました。
というわけでメインマシンから下したNVMeにスイッチ。ただでは転ばんよ!
問題その2 冷えない
あ た り ま え 体 操
買いました。

2696 v2もキメて合計8000円強なり。
なんやかんやでベンチ台の上ですらまともに動いたのは4月のこと…
2640 v2の構成でOCCTも通ったので、やっと本番です。

そして伝説へ
さて、ここまで来たらあとはSGPC K59にねじ込んでr/sffでイキるだけです。
(ここでひっそりとCPUが2696 v2に刺し変わっている、OCCT通らんがまあよし)

が…
問題その3 電源
これは当初より認識してはいた、220Wで足りるわけないんだよな、CPUだけで260Wじゃボケ

で、未来まで見通してもこのマシンでしか使わなさそうなこの電源に白羽の矢が立ったんですが、高いんですよね…

買ったんですけどね…
多分次期メインマシンはこの電源になってると思います。
問題その4 入らん
入りません。ケースの説明が嘘ついてました

若干薄いファンを買いました。(25mm⇒20mm)

結局後になってもうちょっと薄いのを買いました

完成(1)

ちなみにこの画像の撮影日は23/6/2、初回パーツ発注は1/31なのでここまで4ヶ月である
できた~~~~~~~~~~~~(グラボはお茶を濁すようにHD7750)
使い道無さすぎ!!!!!!!
あ、そういえばあのグラボ買おうとしてたんだった、無くなる前に買わないと

完成(2)

できた~~~~~~~~~~~~
8割ゴミでできてます(2割は電源/SSD/CPUファン/ケース)
完全に自己満足すぎておもろい(いくらかけたんだこのマシンに)
書き漏れたその他問題点:
・オーディオがまともに鳴らない
・フロントUSBヘッダが全部だめ
この後r/sffのDiscordに投げてイキったのでベンチ台に下してビルドマシンになりました。
まんぞく。(ファンも調整したらまともに各種ビルド通るようになりました)

余生

部品が届いてないのでまだ取り付けれないけどガチビルドマシンになる予定です。乞うご期待!!
まとめ
・ちょっと高くてもまともなセラーから買おう
・ネタマシンを組んでいるときは現時点での投資総額を計算しないようにしよう
・小型ビルドマシンを組みたい人以外はX79-SSは買うな
以上、IVY BRIDGE OVERDOSEでした。皆様も良き中華ライフを!
これはsmhn Advent Calendar 2023 10日目の記事でした。
昨日は喪女さん、明日はぽんこつさんです。
おまけ:
【マシン(K59搭載時)総額】
X79-SS \13.411-
E5-2696 v2 x2 \2,211 x 2 = \4,422-
クーラー \2,176 x 2 = \4,352-
ファン \1,359 x 2 = \2,718-
メモリ \100 x 2 = \200-
ライザーケーブル \2,482-
EPS分岐 \318-
電源 \10,976-
(グラボ \22,000-) (使いまわし目的で買ったので含めない)
総額 \38,879-
【買ったけど使わなかったパーツ】
ファン \955 x 2 = \1,910-
CPUクーラー \304 x 2 + \990(送料) = \1,598-
E5-2640 v2 x 2 \999 x 2 = \1,998-
合計 \5,506-
全パーツ合計 \44,385-
明日EPOLIS!?RESIDENTの思い出 & 八段取るまでの記録
どうも、DJ KUR4GEです。
どうやら昨年のクリスマスぶりの記事らしいですよ??意味わからん 5秒で1年経っとる
明日EPOLIS!ということで(?)、八段も取れたことだし今作の思い出と寺始めるまで~これからのことを書き留めておこうかなというわけで、久々にはてブロを開いているわけであります(突然の国会答弁)
今作の思い出
1. 八段が取れた

まずはこれというか、なんというか…
いや~八段ですよ八段、レベル11が2回も段位に出てくる!異次元。来作も受かれるかどうか今からひやっひやです。
元々前作で尻込みしすぎて二段までしかとって無くて(EROICA灰をAランクたたき出す二段がどこにおんねん)、今作も稼働後五段で長らく放置していたんですが、ライバルがガンガンステップアップしていくのでつられて特攻した結果受かっちゃいました。やっぱり持つべきはよきライバルです。まる。えぬぜ、げんどる、シドあたりには頭が上がりません!
ちなみにサファリはACでは落ちっぱなしです(令和のサファリ難民 INFでは専コンパワーで16%抜けで合格)
2. 初鳥

AAAですよAAA、88.88%オーバー!
ポゼNとかいうちょけた譜面だけど出た!!!!!グラフ部分の幅いっぱい使って「AAA」って出されるとクッソ気持ちいい、関係ないけどファーボ擬人化リザ引かなくてよかった
3. ライバルとエンカ


げんどるは俺の一生のライバルです(とはいいつつも地力はどんどん離されている)
なんかいつのまに九段取ってたし12のランプいっぱいつけててこわいやつとエンカ、異常DJ会議って感じで変なこといっぱいやれてよかったです。

RESIDENT 総評
楽しい体験ができました、最高。
が、ゲーム単体で見ればUIの雰囲気も曲も含めてCastHourの方が好き(絶対悪とかn/aとか曲がとにかく良すぎて、その上テーマがはっきりしてる分UIがキマってた。もににはいいぞ。それに比べて今作のVOID君何?でもXeruleanとかは良かった ZAQUVAきゅんもっと寺に曲書いて♡)でした。EPOLISに期待。
----
ここから先は備忘録というか初心者向け?八段までこんな感じで上がってきましたよ~みたいな一例として書き留めておきます。
1. 始めたきっかけ
自分は元々高校時代から極度のユーロビート好きで、高2ぐらいの頃一回聞き飽きてジャンルを横に広げたところ、ダンスマニアへ到達。ここでDDRというゲームの存在を知るなど。けどその時は音ゲーをやろうとは思わなかったうえに(太鼓さん次郎をごくまれにやるぐらいだった)コナオリへは結局到達せず。
で、当時自分は電子工作のオタクだったので(まだ秋月しか使ってなかったけど)ニコ技タグを巡回していたところ出会ったのが…
「なんだこの曲!?」と脳天にビビっと来たのは今でも覚えている(人生で二度とない衝撃だった)
んで、ここから飛び込んだのはDDR…ではなく、Stepmania。本家Pad譜面を4Kにしてしばいてました。もうやってないので許してください…
Q. いつIIDX始めるんですか?
A. もうちょっと待て
んで、電子工作のオタクで、当時専門学校が名古屋だったため大須にしょっちゅう行ってて、ある日(2020年某日)今まで見向きもしなかったゲーセンに目を向けたら、なんかDDRがおるな?となり…(当時のタイステ大須はDDRが商店街から見える超絶晒し配置だった)

ちなみにこの時待ちがいてプレッシャーやばかった(未プレイ+既プレイerのペア)
やりました。
で(説明が面倒になった音)、こっから「青い衝動 for EXTREMEってダサいよな」ってなってIIDXに移行しました。時に2021年、BISTROVERのことであった…
初クレの画像?DDRみたいに最後にまとまったの出ると思ってたら出なかったので無いっす
2. 初心者時代
【やったこと】
- BMSの導入
- 専コンの購入
早くなぁい???
今思っても早いです。ここまで気合入れてる初心者知らない。
ここでひとつ失敗ポイントがあったので気合入れてる初心者がこれ読むようなことがあれば気を付けてください(誰が読むんだよ)。
運指考えずにノリでPS2専コンを使うな

みんなは非皿側をちゃんと基本形にできるように意識してやろうね、お兄さんとのお約束だよ!
3. ~六段
【やったこと】
- BMS
- 本家
そのまんまです。この頃はやれば伸びます。少なくともBMSで300万打鍵やりました。
一つだけアドバイス(ACサファリ超えてないお前が書くなよ)を書くと
皿ソフランに逃げるな 物量(あとF/S)を意識しろ
ぐらい?六段で皿ソフランに逃げた人を数人知ってますが大体伸び悩んでます。ただ皿はある程度まで伸ばせば皿複合がえっぐいうまいヤバ人になれるかも?
▽11下位ぐらいをシバけるようになれば六段はひねりつぶせるのでがんばりましょう
4. 難民~八段~現在
サファリ落ちました。さて何をやったか
【やってること】
- ランプ埋め(▽10~▽12-)
ノマゲが5個付いたら1つ上のイージー特攻、ハードが1個ついたら2個上のイージー特攻と1個上のノマゲ特攻、をひたすら繰り返してました
埋めれば多様な譜面を触れるので自ずと総合力が上がった感じがある。ランセレは正義
今やってる最中なのでこれぐらいしか書くことないです。しいて言えば本家か乱やらないと汚い譜面が押せなくなるぐらい まだやればうまくなる段階なのかも?
以上。参考までに。
来作八段継続を願って!
Raspberry Pi Picoで遊んでみた
この記事は Raspberry Pi Advent Calender 25日目の記事です。
完走おめでとう!
…????
(注意:記事中の画像はだいたい再現写真なのですでにパーツがついていたりします)
あらすじ
青年にはRaspberry Pi Picoがわからぬ。しかし、青年の手元には日本橋のデジットで「アマゾンより安いやん!」と衝動買いしたRaspberry Pi Picoが半年以上袋も開けぬまま確かにそこにあった。
ある日青年は、何年も前にリチウムイオン仕様に魔改造したゲームボーイポケットを、久々にテトリスを遊ぼうと取り出した。
しかし、たった2年も前には美しい灰色の反射板が見えていた液晶は、真ん中から画面の殆どが真っ黒に染まってしまっていたのだ。
青年は激怒した。必ず、邪智暴虐のビネガーシンドロームをこの世から消し去らねばならぬと決意した。
一寸落ち着いたあと、青年は気づいた。ビネガーシンドロームを撲滅するのは良いが、自分はまずは目の前のゲームボーイで遊びたいのである。そこでふと、青年の頭に思い浮かんだのは前述のRaspberry Pi Picoだ。Cortex-M0+@133MHzの性能、PIOやDMAを駆使すれば、ゲームボーイの小さな画面などあれよあれよとキャプチャできてしまうのではないか…?
善は急げである。部品箱を漁りやや袋の黄色くなったPicoを取り出した青年は、ボードマネージャでパッケージを更新しないとPIOが使えないのも忘れたままに、Arduino IDEを立ち上げ、100均のMicroUSBケーブルでPicoをPCにつなぎ始めた―
TL;DR
ゲームボーイの液晶をRaspberry Pi Picoでキャプチャしようとしてみた(未完)
ゲームボーイの液晶
ご存知の通り(?)160x144ピクセルのSTN液晶。実は一時期は160x160のパネルが使われている時期があったらしい。
仕様の詳細解説はちゃんとしたサイトに譲るとして、実はただの2ビットSPI(5V TTL、立ち下がりで取り込み。今回は適当にGPIOに直結しちゃいましたが、いいこはまねしないでね)。周波数はだいたい4MHzぐらいらしく、並のマイコンではちょっとキャプチャは厳しいかなー?という感じ。でもRaspberry Pi PicoのPOWERならなんとかしてくれるはず!
分解
リチウムイオン化があまりにも雑な様子

裏蓋はなくしました。
邪智暴虐のビネガーシンドロームの様子

Yネジはとうに捨てているのでイオシスの500円ドライバーでさくっと分解。
邪魔な線を剥ぎ取って基板を見るとダイオードが飛んでいたので直しました。

フラックスきちゃねー!
土曜日に滋賀のトリプルツーで買ってきたLM317で3.1Vを作って電源ON!

動作OK!
液晶コネクタ、初代ゲームボーイと同じかな?と思ったらそもそもピン数から違うっぽい?

と、思いつつ剥いていくと液晶の裏に超丁寧な大量のテストポイントが!

やっぱ俺達の任天堂!スゲー!

丸裸基板 with テトリス
接続
さっきから見えちゃってますが、こんな感じでそこらに転がってたモーターのUEWでさくっと。

接続は以下の通り。よいこのみんなはレベル変換をはさもうね
ST → GP2
D0 → GP3
D1 → GP4
CP → GP5
S → GP6
CPL → GP7
プログラミング
まずは「GPIOでなんとかなったら嬉しいな?」ということでgpio_getを使った雑でGO(digitalReadでは速度がたりなさそうなので)、とやったら普通に取れてしまいました。流石にCPUパワーの暴力。
…あれ?PIOいらなくね?
せっかくラズピコなんだからPIO使いたいだろ!
というわけでPIO編開幕です。
PIO
Arduino IDEでPIO使えるんかいな?と思ったらこういうブログがあり自分で適当にアセンブリしちゃえばいいそうで。
自分はこうやってスケッチと同フォルダにバッチファイルを用意しちゃいました。
新しめのバインディングじゃないとpioasmが入ってないらしいので注意!
pico-sdkのサンプルにちょいちょいと書き足して2-bit SPIなPIOを作成。
フレーム頭でFIFOのクリアさえやれば問題なく動いてくれました。
PCに送信
fpsを測定したところ30fpsで、40byte x 144line x 30Hzが1.3Mbpsぐらいなので2MbpsでUARTを立ち上げてフレームを生で送信、PC側では適当にSDLにでも表示するのを組んだら映りました。
が、結構横にぶれたりする。よくよく考えたらVBLANKの間に送るのは無理がありすぎるな?
まてよ?そういえばPicoには2つコアがあったな?
マルチコア編
Picoのマルチコアは結構かんたん。
こんな感じで適当に関数を呼ぶだけ。今回は送信とフレームキャプチャでコアを分けようという魂胆だ。
が、実際動かしてみると何故かサブコア側の処理が動かなかったり、送信側をサブコアに持っていこうとするとクラッシュしたっぽい挙動(USBでUARTとして認識しない)をしたりとよくわからんねえなと言う感じに。
アクセスかぶるのがだめなのかな?とスクラッチパッド経由で送受信しようとしても駄目・・・
と、このあたりでやる気WDTが作動してしまったのであえなく終了。
VGA出力とか手を変えていつかやってみようと思います。尻切れトンボですまん!
あとがきと言う名の駄文
いやあ、滑り込みアウト!でもなんとかなった(当社比)!
そんな今日はDanceDanceRevolution EXTREME 20周年!普段から音ゲーをやってる自分には知らん宗教の記念日なんかよりよっぽど大事な日です。
そのDDRや同じコナミの音ゲー、IIDXの専用コントローラーの基板やらPS系専用コントローラーの変換機をRPi Picoで作る予定があるので、その際はまたブログで書こうと思います!(CH552Gとかになるかも)乞うご期待