Pokémon Platinum / Nintendo WFC

Wi-Fiクラブ再開通

公式のニンテンドーWi-Fiコネクションは2014年5月に止まりました。有志のサーバーが今も動いているので、エミュレータのまま、実機もパッチもなしで通信対戦ができます。2人で読む手順です。

用意するもの

スタンドアロン版の melonDS を使う場合だけは実機からの吸い出しが要ります。ここでは使いません。RetroArch の melonDS DS コアは内蔵BIOSのまま接続できて、接続先サーバーも最初から設定済みだからです。

セットアップ

  1. RetroArch を入れる

    PC は公式サイトから、Android と iOS はそれぞれのストアから。

  2. melonDS DS コアを入れる

    RetroArch 本体だけではDSは動きません。コアを別途ダウンロードします。名前が似た旧コア「melonDS」が併存しているので、末尾に DS が付いた方を選んでください。

    メインメニュー → オンラインアップデーター → コアダウンローダー → Nintendo - DS (melonDS DS)
  3. ユーザー名を決める

    ここがこの手順で唯一、2人で違う値を入れる場所です。次の項目で詳しく書きます。

    設定 → ユーザー → ユーザー名
  4. MACアドレスの決め方を変える

    ROMを一度起動してから、クイックメニューのコアオプションを開きます。MAC address modeDerive from libretro username に変更してください。初期値のままだと全員が同じ端末に見えてしまいます。

    クイックメニュー → オプション → MAC address mode
  5. サーバー設定は触らない

    接続先は Kaeru WFC が既定値で入っています。DNSを手で設定する必要はありません。

2人で違うのはここだけ

設定 → ユーザー → ユーザー名

あなた 例: shinou-01
友人 例: shinou-02

このユーザー名からMACアドレスが作られます。2人が同じ名前だと同一の端末として扱われ、対戦相手として認識されません。中身は何でもいいので、重複しないことだけ確認してください。

ゲーム側の準備

ここからが実は一番時間がかかります。ポケモンプラチナのWi-Fi機能は、ゲームを少し進めないと解放されません。2人ともこの状態まで進める必要があります。

  1. ジムバッジを1個取る

    バッジが1個もないとパルパッドがもらえません。

  2. パルパッドを受け取る

    ポケモンセンターの地下へ降りて、受付の女性に話しかけます。

  3. Wi-Fiに接続してフレンドコードを出す

    地下にいる左から2番目の女性に話しかけると接続します。ここで自分のフレンドコードが発行されます。

  4. フレンドコードを交換して登録する

    お互いのコードをパルパッドに入れます。片方だけでは成立しません。2人とも相手のコードを登録して、はじめて相手が見えるようになります。

  5. 対戦するポケモンを用意する

    レベル50フラット、レベル100、制限なしの3つから選べます。レベル50戦なら手持ちが50未満でも自動的に揃うので、育成の手間はいくらか減ります。

対戦する

2人が同時にオンラインでないと繋がりません。それぞれポケモンセンター地下のWi-Fiクラブに入り、相手が入ってくるのを待ちます。シングルかダブル、ルールを選んで開始です。

閉じた対戦になる理由

第4世代のWi-Fi対戦は、パルパッドに登録した相手としか成立しません。公開サーバーに接続していても、見知らぬ他人と当たることはない仕組みです。自前でサーバーを建てなくても、対戦相手は登録した相手だけに限られます。

繋がらないとき

症状見るところ
相手が出てこない 2人ともユーザー名を別にしたか。2人とも相手のフレンドコードを登録したか。この2つがほぼ全てです。
接続テストが通らない コアが melonDS DS であることを確認してください。名前の近い旧コアだとWi-Fi周りの作りが違います。
Error 20110
service has been halted
Kaeru WFC 側で報告のあるエラーです。時間を置くか、コアオプションで接続先サーバーを Wiimmfi や AltWFC に切り替えて試します。
Wi-Fi設定が見つからない DSのWi-Fi設定はゲーム内から開きます。RetroArch側ではなく、エミュレートされたDSの設定メニューです。

仕組み

なぜ12年前に終わったサービスに今も繋がるのか

公式サービスの停止直後から Wiimmfi が代替サーバーとして立ち上がり、現在まで動き続けています。今は役割が3層に分かれていて、Wiimmfi が汎用のWFCエミュレーション、Kaeru WFC がSSL部分、Poké Classic Network が第4・第5世代ポケモン向けのGTSやバトルビデオを担当しています。

かつてはROMにパッチを当てるのが必須でした。DSは接続先のサーバー証明書を検証するので、公開鍵を差し替えないと別のサーバーに繋げなかったためです。2018年にDSのSSL実装の欠陥が見つかって、これが不要になりました。DS本体に入っているNintendo署名のクライアント証明書が、サーバー証明書と同じCAで署名されていて、しかもDSは「クライアント証明書が別の証明書に署名している」ことを検証せずに通してしまう。つまり誰でもDSから見て正当なサーバー証明書を作れます。この発見を使っているのが Kaeru WFC で、リポジトリ名は "Because Nintendo can't do SSL properly" です。

ついでに言うと、DS同士の「ローカル通信」の方はエミュレータ間では実現できません。あちらのプロトコルはパケットの遅延到着を許容しない作りで、ネットワーク越しに延ばすこと自体が不可能だからです。インターネット対戦の方が通常のTCP/IP通信なぶん、かえって素直に動きます。