Site cover image

🐾 flag3

ポケットモンスター クリスタル ポケムーバーバグで名前がバグったポケモンを入手する方法

📚
本記事は、Glitch City Wiki の Guides: Obtaining an unnamed Pokémon using Transporter Glitch をもとに、日本語版向けに翻訳・編集したものです。

『ポケットモンスター クリスタル』日本語版(ニンテンドー3DSバーチャルコンソール)で、名前がバグったポケモンを入手する方法を解説します。

概要

このガイドでは、ニンテンドー3DSダウンロードソフト「ポケムーバー」のバグを利用して、任意コード実行に使うポケモンを入手します。

この方法は VC版専用 です。手順を進めるには、ポケモンずかんを入手し、モンスターボールを使えるところまでゲームを進めておく必要があります。

このガイドには2種類のセットアップがありますが、実行するのはどちらか一方だけです。プレイ中にボックス1を満タンにしたことがあるかどうかで、手順が異なります。

  • ボックス1を一度も満タンにしたことがない → セットアップ1
  • ボックス1を一度でも満タンにしたことがある → セットアップ2

セットアップ1:ボックス1を一度も満タンにしたことがない場合

手順1:準備とポケムーバーバグの実行

  1. ボックス1を空にし、中にいるポケモンをすべて別のボックスへ移動します。
  2. 手持ちを4匹以上にします。そのうち2匹は、後の手順でボックス1へ預けます。
  3. 手持ちのポケモン1匹に任意のどうぐを持たせます。
  4. 使用するボックスをボックス1に切り替えます。
  5. 以下の手順でポケムーバーを使用します。
    1. どうぐを持たせたポケモンをボックス1へ預け、セーブします。
    2. 別のポケモンを1匹、ボックス1へ預けます。セーブせずにゲームを終了します。
    3. ポケムーバーを起動し、ボックス1の中身を転送します。
      • どうぐを持っているポケモンは転送されません。これは想定どおりの動作です。
      • 最後に預けたポケモンをポケムーバーが転送しようとしたら、そのまま転送します。
  6. ゲームを再開します。「ボックスをかえる」メニューではボックス1のポケモン数が0匹と表示されますが、実際には1匹残っている状態になります。

手順2:バグったボックス1から名前のバグったポケモンを作る

  1. バッグを一度開きます。
  2. 「ボックスせいり/メールはずしてね」を使い、先ほどセーブせずに預けたポケモンを、手持ちからボックス1の一番上のスロットへ移動します。ほかのスロットへ移動するとゲームがフリーズするため注意してください。
  3. 同じメニューで、ボックス1の2番目のスロットにいるポケモンを一番上へ移動します。その後、同じ操作をもう一度繰り返します。
  4. 「ひきだす」メニューでポケモンを確認します。下の画像のように、2匹のニックネームがどちらも複数の「?」になっていれば成功です。どちらも任意コード実行に利用できます。
    • 複数回入れ替えても2匹の名前が完全な空欄のままの場合、過去にボックス1を満タンにしたことがある可能性が高いです。その場合はセットアップ2を使用してください。
Image in a image block

手順3:ボックス1を正常な状態へ戻す

  1. ボックス1の一番上にいる名前のバグったポケモンを、ボックス3の一番上に移動します。
  2. 「ポケモンをあずける」を選び、任意のポケモンをボックス1に直接預けます。「ボックスせいり/メールはずしてね」は使わないでください。これにより、現在ボックス1に存在しているバグったポケモンが上書きされ、ボックス内のポケモン数も正常な値へ戻ります。
  3. 使用するボックスをボックス3に切り替えます。これでセットアップは完了です。

続きは 📄Arrow icon of a page linkポケットモンスター クリスタル バイナリエディタ の「手順4:0x1500制御コードによる任意コード実行を行う」を参照してください。

セットアップ2:ボックス1をすでに満タンにしたことがある場合

手順1:準備とポケムーバーバグの実行

  1. ボックス1を空にし、中にいるポケモンをすべて別のボックスへ移動します。また、オニスズメを1匹用意します。入手方法は次のいずれかです。
    • 野生のオニスズメを捕まえます。ゲーム開始直後から行ける46ばんどうろの南側がおすすめです。朝または昼のみ出現し、出現率は30%です。
    • コガネシティと35ばんどうろの間にいるゲートの係員からオニスズメを受け取ります。
  2. オニスズメをボックス2へ入れます。
  3. ボックス2の残りの枠を、任意のポケモンで埋めて満タンにします。これらのポケモンは手順中にデータが破損する可能性があるため、失っても問題ないポケモンを使用してください。
  4. 手持ちを6匹にします。このセットアップでは、手持ちの1匹目が名前がバグったポケモンになるため、1匹目には名前がバグっても構わないポケモンを置いてください。
  5. 手持ちの6匹目のポケモンに任意のどうぐを持たせます。
  6. 使用するボックスをボックス1に切り替えます。
  7. 以下の手順でポケムーバーを使用します。
    1. どうぐを持たせたポケモンをボックス1へ預け、セーブします。
    2. 手持ちの5匹目のポケモンをボックス1へ預けます。セーブせずにゲームを終了します。
    3. ポケムーバーを起動し、ボックス1の中身を転送します。
      • どうぐを持っているポケモンは転送されません。これは想定どおりの動作です。
      • 最後に預けたポケモンをポケムーバーが転送しようとしたら、そのまま転送します。
  8. ゲームを再開します。「ボックスをかえる」メニューではボックス1のポケモン数が0匹と表示されますが、実際には1匹残っている状態になります。
  9. 「ボックスせいり/メールはずしてね」を使い、ボックス2のオニスズメを ボックス1の一番上のスロット へ移動します。
  10. 「ボックスせいり/メールはずしてね」を使い、ボックス2のポケモンをボックス1の一番上のスロットへ繰り返し移動します。これ以上追加できなくなるまで続け、ボックス1を満タンにします。
    • 正しくできていれば、ボックス1の 下から2番目のスロット にオニスズメがいる状態になります。
  11. ボックス2に最後に残ったポケモンを手持ちに加え、手持ちを再び6匹にします。
  12. 手持ちが満タンの状態で野生のポケモンを1匹捕まえます。捕まえたポケモンはボックス1へ送られ、ボックス1がオーバーフローした状態になります。

手順2:0x1500制御コードによる任意コード実行で、手持ち1匹目の名前をバグらせる

  1. ポケモンセンターのパソコンを開き、ボックス1〜3の名前を以下のように変更します。それ以外のボックスは変更不要です。
    📦
    ボックス1:にユゥリとてろろ

    ボックス2:ヅレダバョづづづ

    ボックス3:づづづぢさたの

  2. ポケモンセンターのパソコンの前でセーブとリセットを行います。
  3. ゲームを再開したら、パソコンの前から左へ1歩→下へ1歩の順に移動し、ポケモンずかんを開きます。下の画像で示した位置で開いてください。
    Image in a image block
  4. ポケモンずかんを閉じてから、右へ1歩→上へ1歩の順に移動し、パソコンを開きます。「ひきだす」メニューに入って一番下のスロットまでスクロールします。正しくセットアップできていれば、「ひきだす」メニューが自動的に閉じ、パソコンのメインメニューへ戻ります。
  5. 手持ちポケモンを確認します。1匹目のニックネームが「?」1文字に変化していれば成功です。 この時点では、そのポケモンの「つよさをみる」を開かないでください。

手順3:ボックス1を正常な状態へ戻す

  1. バッグを一度開きます。
  2. 以下の操作でボックス1を正常な状態に戻します。
    1. ボックス1の一番上にいる2匹を逃がします。
    2. 「ポケモンをあずける」を選び、手持ちの名前がバグっていないポケモンをボックス1に直接預けます。「ボックスせいり/メールはずしてね」は使わないでください。
    3. これでボックス1の機能は正常な状態に戻ります。
  3. 「ボックスせいり/メールはずしてね」を使い、手持ち1匹目の名前がバグったポケモンを、ボックス3の一番上に移動します。
  4. 使用するボックスをボックス3に切り替えます。これでセットアップは完了です。

続きは 📄Arrow icon of a page linkポケットモンスター クリスタル バイナリエディタ の「手順4:0x1500制御コードによる任意コード実行を行う」を参照してください。

付録

セットアップの詳しい仕組み

ボックス名コードの解説

このコードは、手持ち1匹目のポケモンのニックネームを消去・破損させ、通常の0x1500制御コードによる任意コード実行セットアップで使用できるようにするためのものです。

hlを使った直接書き込みにより、ニックネームを0で埋めます。

アセンブリコード
SECTION "Main", ROM0
Main:
  LOAD "BoxCode", WRAMX[wBoxNames]
BoxCode:
    add a, 0xA3 ; a = 0x71
    ld [0xC4D8], a ; 次の命令を書き換え、.entryPoint へジャンプさせる
    jp .entryPoint
    ld d, b ; ボックス名の終端文字0x50(ジャンプで飛び越すため実行されない)
.entryPoint
    ld de, 0x0FA7
    add hl, de ; hl = 0xDDEE、wPartyMon1Nickname の最後のバイト
    xor a, a
    ld [hld], a
    ld [hld], a
    ld [hld], a
    ld d, d
    ld [hld], a
    ld [hld], a
    ld [hld], a ; 0x00を6回書き込むことでニックネームを実質的に0で埋める
    ld sp, 0xC0BB ; 安全に戻るための準備
    ret
.end
バイナリ
C6 A3 EA D8 C4 C3 DB DB 50
11 A7 0F 19 AF 32 32 32 50
32 32 32 31 BB C0 C9 50