CPS2のゲーム基板(B-Board)には電池が搭載されており、その電池が切れると起動に必要なセキュリティキーが消え、ゲームが正常に起動しなくなるという恐ろしい結末が待っています。CPS2のゲームがリリースされていたのは1990年代~2000年代初頭であり、2019年の今、いつ電池が切れてもおかしくありません。事実私のプロギアの嵐の電池がつい先日切れました。(笑)
電池切れが起こる前に上手くセキュリティキーを保持しつつ新しい電池に交換することもできるのですが、セキュリティキーが消えてしまい基板が起動しなくなった場合はどうしたらいいのでしょう。
心配はいりません。海外のハッカーがセキュリティキーを書き戻す素晴らしい手法を編み出しました。
その手順は、前述のハッカー本人が「Capcom CPS2 Security Programming Guide」として綺麗にまとめています。記載内容はとても解りやすく実際に私も手順にしたがい復旧できました。しかし記事が英語であること、多少ハマったところもあったことから、補完資料としてまとめることにしました。
別ソリューションとしてカスタムチップをB-Board上に実装して電池レス化する「InfiniKey-CPS2」というものもあります。しかしながらチップの入手性があまり良くないことと、はんだ付けの難易度が比較的高いため、はんだ付けをする箇所が少ない&基板を複数復旧する場合にも基板毎に電池&電池ケースだけを用意すれば良い、こちらのソリューションをお勧めします。
なお、オリジナルの記事ではいくつか存在するB-Boardのリビジョンすべての復旧(desuicide)手順を網羅していますが、私の記事ではプロギアの嵐の基板(93646B-7)を例に記載していきます。
必要なもの
1. Arduino Uno
いわゆるマイコンボードです。これにプログラム「ArcadeHacker_CPS2.ino」を書き込んで実行し、セキュリティキーを基板に書きこむことになります。Arduinoの公式ハードはそれなりの価格ですが、非公式の互換ハードが多く製造されており、安く入手できます。下手をしたら1回しか使わないので品質が多少低くても互換ハードで十分でしょう。私が使用したものは以下のリンクのものです。
ELEGOO UNO R3
2. LCD Keypad Shield
Arduinoで画面表示を見て操作するために必要な、液晶とキーパッドが一緒になったハードです。これもピンキリですが私は互換ハードの互換ハード(?)で済ませました。
HiLetgo 1602 LCD キーパッド シールド ボード
3. ピンストリップ
LCD Keypad Shield基板上の穴に挿して接続端子とするためのピン。私は以下のものを購入しましたが大量に余りました。7本あれば良いです。
HiLetgo® 20個セット 40Pin 2.54mm 単一列端子ピン ヘッダー ストリップ
4. ジャンパワイヤ
ピンストリップで増設した接続端子と基板を接続するために使うケーブルです。また、ATX電源から出るペリフェラル4ピンをB-Boardに接続するためにも使います。(後述) オリジナルの記事ではオスオスとメスメス8本ずつ必要と書いてありますが、93646B-7の場合はメスメスのタイプが7本あれば間に合います。ケチって短いものにすると作業効率が低下するので注意です。
JPワイヤー20cm(メスーメス)10本入【20SS-MIX】
5. グラバークリップ
B-Board上の6ピン端子(CN9)に6ピンコネクタを使わずそれぞれのピンにケーブルを1本ずつ接続するために使用します。6個必要です。これが地味に価格が高い。安いのを探しまくって海外発送のものにしました。
Lovoski 2個セット ミニグラバー
6. 電源延長ケーブル(ペリフェラル4ピンオスメス)
自作PC等のATX電源から生えるHDD電源用ペリフェラル4ピンコネクタから、B-Boardに供給する電源(5V)を取り出すために使用します。最近のATX電源だとペリフェラルコネクタがなく、SATA電源コネクタ(平べったいアレ)だけしかないかもしれません。その場合はSATA用電源変換ケーブルを用意します。
電源延長ケーブル【WA-048B】
7. 電子工作用具
上記のほか、電子工作全般に使用する以下のものが必要です。
・はんだごて
・はんだ
・ケーブルストリッパー
・ニッパー
・テスター
テスターは無くても大丈夫ですが、そもそも電池切れであるのかどうかの確認に使えますし(3.6Vがちゃんと電池から供給されていることをチェックする)、トラブルシューティング用にあったほうが良いです。
8. CPS2関連
CPS2のB-Board用として以下のものが必要です。
・T20トルクスドライバー (これでカバーを留めているネジ(4本)を外します。ホームセンターなどで入手できます)
・塩化チオニルリチウム電池 (交換用電池です。単3形はおさまりはいまいちですが容量が大きいです)
ER14505(単3) 塩化チオニルリチウム電池 2600mAh
・電池ケース (上記電池の収納用です)
電池ケース 単3×1本 リード線 板バネ端子【BHC-311A】
9. ATX電源搭載自作PC(電源、Arduinoセッティング用)
突然ハードルが上がりました。5VとUSB電源が取れれば自作PCでなくてもなんでも良いです。自作PCがあれば一番楽だと思います。Arduinoセッティング用としてWindowsPCは必要となります。Linuxでもおそらく出来るとは思いますが素直にWindowsでやりましょう。そのほうが無難です。
10. 復旧用プログラム ArcadeHacker_CPS2.ino
復旧用プログラム ArcadeHacker_CPS2.ino を https://github.com/ArcadeHacker/ArcadeHacker_CPS2 からダウンロードしてデスクトップなど適当な場所に保存しておきます。
基板復旧(desuicide)
必要なものを用意するだけでちょっと疲れちゃうと思いますが、物さえ準備できれば実際の作業はそれほど大変ではありません。それではここから実際の復旧手順を書いていきます。
1. B-Board電池交換
1.1. まず、基板は2階建てになっているので、2階部分を外します。普通に手で外せますが、ピンが曲がらないように注意しましょう。次にB-Boardに実装されているもはや無用の長物ですらない電池をニッパーを使って基板から外します。マイナス側はニッパーが入りづらいので、プラス側をニッパーで切断してから電池を起こし、マイナス側は電池をぐりぐりするとポロッと外れます。
1.2. 電池ケースをはんだを使って取り付けます。基板を裏返し、元々はんだが盛られていたところにはんだをちょっと足せばすんなり付けられます。プラスマイナスは間違えないように慎重に。ケースを基板に繋いだら電池をケースにセットしておきます。
2. Arduinoセッティング
2.1. Arduino本体にLCDキーパッドを装着します。ここはオリジナルの記事の写真をみれば直観的に出来るかと思います。次にピンストリップを7列分用意して、LCDキーパッド基板右上の7個ある穴に差し込みます。グラグラしてすぐ外れるのでビニールテープなどで固定しておきましょう。
2.2. Arduino開発環境である Arduino IDE を https://www.arduino.cc/en/Main/Software からダウンロードしてインストールします。インストール方法はググってください。いきなりハショりましたが世の中そんなものです。私は早くこの記事を書き上げて趣味のアニメ鑑賞をしたいのです。今期はえんどろ~!が最高ですね。
2.3. ArduinoとPCを付属のUSBケーブルで接続し、ダウンロード済の復旧用プログラム ArcadeHacker_CPS2.ino をダブルクリックします。Arduino IDEが起動するので、左上の「→」(マイコンボードに書き込む)をクリックします。
2.4. 書き込みが完了して数秒ほどたつと、LCDに「Select a game: –press down–」と表示されます。何も映らない人は焦らないでください。私もはじめは何も映りませんでした。LCDの輝度が基板左上にある半固定抵抗で調整できます。精密ドライバーで反時計回りに10周くらいまわして映らないようであれば、時計回りに20周くらい回します。それで映らなければ反時計周りに30周、それで映らなければ時計回りに40、、、そのうち映ります。輝度を合わせて出荷しろと(笑)
これでArduinoの準備は終わりです。PCから外しておきましょう。
3. B-Board電源供給用ケーブルの作成
オリジナルの記事の「Assembling the CPS2 target power cable」のところです。
電源延長ケーブルの「赤」と「その隣の黒」のケーブルをニッパーで切って、これまたニッパーで途中をぶった切ったジャンパワイヤとはんだでくっつけて、B-Board電源供給用に使うケーブルを作成します。黄色とその隣の黒のケーブルは12Vなので使用しません。不安な方はATX電源に接続し電源を供給状態にし、テスターで電圧が5Vであることを確認してください。
4. Arduino(LCD Keypad Shield)にジャンパワイヤを接続
LCD Keypad Shield基板上のピンにジャンパワイヤを接続していきます。GNDはATX電源から持ってくるGNDもあるので、ここでは便宜上Arduino-GNDという名称で呼びます。Arduino-GNDはLCD Keypadの半固定抵抗右横にある6ピンの右上になります。そこにジャンパワイヤを接続します。
ピンストリップで増設した7ピンの接続端子(LCD Keypad右上)は、番号が左から13、12、11、3、2、1、0となります。ボードリビジョン93646B-7を復旧する場合、12、11、3、2の4本を使うため、そこにジャンパワイヤを接続します。
5. グラバークリップ取り付け
4.で接続したジャンパワイヤの対向側にグラバークリップを接続します。グラバークリップは二股になっていますが、どちらに接続してもかまいません。
6. ArduinoとB-Boardの接続
B-Boardの左のほうにある6ピンのヘッダ(CN9)にグラバークリップで以下の通りArduinoと結線します。CN9のピン番号は上から1、2、3、4、5、6となります。グラバークリップは二股になっている股間()の突起を押すと先端から手がニョロっと出てきます。それでピンを挟んで接続します。
Arduino-GND → CN9の6
12 → CN9の5
11 → CN9の4
3 → CN9の3
2 → CN9の2
ここはオリジナル記事の写真が見やすいです。
7. 電源接続
手順3で作成した電源供給用ケーブルの黒線(GND)をCN9の6番に繋いでいるグラバークリップの片方に接続(ブリッジ)します。赤線は先にグラバークリップを付け、CN9の1番に繋ぎます。電源供給用ケーブルのペリフェラル端子はATX電源に接続しておきます。(接続前にPCの電源をOFFにしておくこと)
8. B-Boardに電源供給
ATX電源からB-Boardに電源を供給します。PCに組み込んだ状態のATX電源であれば、PCの電源をONにすれば電源が供給されます。
9. Arduinoに電源供給
ArduinoとPCをUSBケーブルで接続し、Arduinoの電源をONにします。
10. セキュリティキー書き込み
LCDに「Select a game: –press down–」と表示されたら、UP DOWNボタンを押して復旧する基板のゲーム名称を表示させ、SELECTボタンを押して選択します。プロギアの嵐はprogearjです。(エミュのゲーム名称に準じているっぽいですね)
書き込みが終わると「–disconnect and test pcb–」と表示されます。PCからArduinoを外します。次にPCの電源をOFFにして、B-Boardに繋いでいたグラバークリップを全て外します。
11. B-Board組み立て
外した2階部分を元に戻し、B-Boardをケースに組み込みます。私は以下の画像のように電池ケースはケースに両面テープで固定しました。
12. 動作確認
さて、上手くいきましたでしょうか。上手くいかなかった場合は、はんだ付け不良で電流がきちんと流れていないなどの原因が考えられます。電池をはんだ付けしたところが3.6V出ているか、ATX電源からちゃんと5Vがきているかなどをテスターを使って確認してみると良いかもしれません。
ここをご覧になってdesuicideを試した皆さまが成功することを祈念してこの記事を終わりにしたいと思います。
Thank you Eduardo Cruz !