【ポケモン初代】なかよしバッヂACE(任意コード実行)のやり方を徹底解説!準備から実用コード集まで【3DS VC対応】

GBC

はじめに

『ポケットモンスター 赤・緑・青・ピカチュウ(初代ポケモン)』には数多くの魅力的なバグ技が存在しますが、その中でも「究極」とも言えるのが任意コード実行(ACE:Arbitrary Code Execution)です。

ACEとは、ゲーム側が本来「データ(ポケモンの名前や道具の個数など)」として扱う領域を、CPUへの「命令列(プログラム)」として無理やり実行させることで、ゲーム内のあらゆるデータを書き換える手法です。

任意コード実行(ACE)を利用すれば、以下のようなことがすべてゲーム内だけで可能になります。

  • 任意のポケモン(ミュウやセレビィ、バグポケモンなど)を出現させる
  • 入手困難なアイテムを自由に入手・増殖する
  • マップの構造を書き換えて自由にワープする
  • イベントフラグ(ストーリー進行度など)を変更する
  • セーブデータを直接書き換える・バックアップする
  • ゲーム内で独自の自作プログラム(テリトリーやミニゲーム等)を実行する

現在では、過去の手法に比べて準備が非常に簡単で扱いやすい「なかよしバッヂACE」が主流となっています。

この記事では、なかよしバッヂACEの概要から具体的な準備方法、実際の使い方、そしてすぐに使えるおすすめのACEコード(文字列)まで詳しく解説します。なお、本記事は筆者が3DSのバーチャルコンソール(VC)をプレイする際の備忘録も兼ねて、初心者の方にも分かりやすいよう体系的にまとめています。

なかよしバッヂACEとは?仕組みとメリット

「なかよしバッヂACE」とは、ゲーム内のバグ道具である「なかよしバッヂ」の道具使用時処理を利用して、任意コード(自作プログラム)を実行するテクニックです。

名前に「バッヂ」と付いていますが、ストーリー中で入手するジムバッジとは一切関係ありません。ゲーム内部のメモリを直接参照させるためのトリガーとなるバグアイテムです。

この手法では、「育て屋に預けたポケモンのニックネーム」を起点にして、「現在選択しているボックス内のポケモンのニックネーム(命令列)」へと処理をジャンプさせます。これにより、ユーザーが意図したプログラムを自由自在に動作させることができます。

なかよしバッヂACEの主なメリット

  1. 準備が圧倒的に簡単
    従来の任意コード実行環境(バイナリエディタの構築など)に比べ、必要な手順が大幅に簡略化されており、バグ技初心者でも比較的スムーズに導入できます。
  2. 一度環境を作れば「何度でも」「どんなコードでも」利用できる
    ベースとなる環境さえ構築してしまえば、ボックス内のポケモンのニックネームを書き換えるだけで、新しいACEコードや公開されている様々なプログラムを即座に実行可能です。
  3. 実行できる内容(自由度)が豊富
    ポケモンの個体値・努力値の編集、アイテム生成、ワープ、図鑑の強制完成、セーブデータの編集など、ゲーム内のほぼすべてのパラメータを掌握できます。研究用途ややり込みデータの作成、3DS VCでのバックアップ運用の際にも非常に強力なツールとなります。

【ステップ1】実行前の事前準備

なかよしバッヂACEを安全かつ確実に実行するためには、以下の2つの前提条件を必ず満たす必要があります。

  1. サファリボールの残数を「30個」にする
  2. 指定したニックネームのポケモンを「育て屋」へ預ける

手順を順番に解説します。

1. サファリボールの残数を30個にする

まず、セキチクシティのサファリゾーンへ入り、何もせずすぐに退出してください。

これにより、サファリボールの残数カウンタ(メモリ領域)が正確に「30個」に設定されます。これは、なかよしバッヂを使用した際のプログラムの挙動を安定させ、フリーズを防ぐための必須条件です。

2. 指定したニックネームのポケモンを育て屋へ預ける

続いて、特定のニックネームを付けたポケモンを1匹用意し、「育て屋」へ預けます。

本記事の初期設定では、以下のニックネームを使用します。

  • 指定ニックネーム:パパてウん

このニックネームを設定したポケモンを預けることで、なかよしバッヂを使用した際に「現在選択中のボックスの、上から6匹目のポケモンのニックネーム」から命令列(ACEコード)を読み込ませるよう誘導します。

⚠️ 重要な注意点(フリーズ防止)

育て屋に「最後に預けたポケモン」が、この指定されたニックネーム(パパてウん)以外になっている状態でなかよしバッヂを使用すると、プログラムが暴走して十中八九フリーズします。

通常プレイ等で育て屋を利用した後は、必ずこの対象ポケモンを最後に預け直す習慣をつけてください。

【ステップ2】バグアイテム「なかよしバッヂ」の入手方法

なかよしバッヂは通常プレイでは入手できない内部番号 0x5E(94) のバグアイテムです。取得方法はいくつかありますが、ここでは最も一般的かつ比較的簡単な「13番目セレクトバグを用いた31番目発掘」の手順を解説します。

手順①:バグ用の「生け贄ポケモン」と「不要な道具」を用意する

  • 生け贄用ポケモン: 手放してもいい不要なポケモンを2匹用意します(ニックネームを「-----」などにしておくと管理が楽です)。
  • 不要な道具: アイテム欄に、消えても問題ない道具を最低2種類(できれば複数)用意しておきます。

手順②:13番目セレクトバグを実行する

  1. アイテム欄の13番目の道具で「セレクト」を押し、メニューを閉じます。
  2. 野生ポケモンとの戦闘に入り、「ポケモン」を選択します。
  3. 用意した生け贄用ポケモン(※先頭以外のスロットに配置を推奨)の画面で「Aボタン」を押します。
  4. ポケモンのグラフィックや名前が一時的にバグった状態になります。そのまま敵から「にげる」か倒して戦闘を終了させてください。

手順③:シオンタウンの左の道路で「31番目発掘」を行う

  1. 以下のシオンタウンの左の道路に到達したら、道具欄を開いて下にスクロールし、31番目のアイテムを確認します。
  2. 正しい座標であれば、31番目のアイテムが以下の壁抜けアイテムに変化しています。
    • 赤:「ライバル」
    • 緑:「にゅうりょく」
    • 青:「ブルー」
      ※本座標は後期版及びVC版のみ対応しています。
  3. この壁抜けアイテムを、手持ちの「不要な道具」と入れ替える(交換する)ことで、安全に手持ちアイテム欄へ取得できます。

手順④:バグ状態の強制解除(必須)

壁抜けアイテムを入手したら、そのまま歩いて移動することができなくなります。

  1. 「そらをとぶ」または「テレポート」を使用して、その座標から即座に脱出してください。(これらを用意していないと身動きが取れず詰む原因になります)
  2. 脱出後、再度アイテム欄の13番目でセレクトを押し、戦闘中にもう一度同じバグポケモンを選択して、必ずバグ状態を解除(元に戻す)してください。

手順⑤:タマムシシティの特定座標で「31番目発掘」を行う

  1. 再度、上記手順②を実行します。
  2. タマムシマンションの裏口よりもさらに左、デパートの屋根のあたりまで移動します。
  3. 壁抜けアイテムを使って、左に2歩下に1歩移動し、以下の座標まで移動したことを確認します。
  4. 特定の位置に到達したら、道具欄を開いて下にスクロールし、31番目のアイテムを確認します。
  5. 正しい座標であれば、31番目のアイテムが「なかよしバッヂ」に変化しています。
  6. この「なかよしバッヂ」を、手持ちの「不要な道具」と入れ替える(交換する)ことで、安全に手持ちアイテム欄へ取得できます。
  7. 再度、上記手順④を実行します。

【ステップ3】ACEコードの配置と効率化(ボックス1匹目への変更)

環境が整ったら、実行したいACEコード(プログラムに対応する特定の文字列)をポケモンのニックネームとして設定し、指定の位置に配置します。

基本的な配置ルール

前述の「パパてウん」を育て屋に預けている状態では、

  • 「現在選択しているボックスの、上から6匹目以降」に、コードを記載したポケモンを順番に並べる必要があります。最後になかよしバッヂを「つかう」と、配置したコードが上から順に実行されます。

💡 さらに便利に!「ボックス1匹目」から読み込ませる拡張コード

毎回ボックスの6匹目までスクロールしてコードを配置するのは手間がかかります。ボックスの「1匹目」から直接ACEコードを読み込めるようにすると、作業効率が劇的に向上します。

ボックス1匹目から読み込ませるには、育て屋に預けるポケモンのニックネームを『パパて[0x64]ん』にする必要があります。

(※[0x64] は通常プレイでは入力できない特殊なバグ文字で、画面上ではHPバーのグラフィックやアルファベットの「E」のように表示されます。)

この特殊なニックネームを持つポケモンは、以下の手順(プログラム)で作成できます。

【手順】育て屋のニックネームを「パパて[0x64]ん」に書き換えるコード

  1. 育て屋にニックネーム『パパてウん』のポケモンを預けた状態にします。
  2. 選択中のボックスの6匹目から順に、以下のニックネームをつけたポケモンを配置します。(1〜4匹目までは何の文字でも構いません)
ボックス位置ニックネーム(入力する文字列)
1匹目〜4匹目(任意・何でもよい)
5匹目(任意・何でもよい)
6匹目がるぜケぼ
7匹目にドぶづの
  1. 配置が完了したら、メニューから「なかよしバッヂ」を使用します。
  2. 成功すると、育て屋に預けているポケモンのニックネーム内部データが自動的に『パパて[0x64]ん』へと書き換わります。

★これ以降は、育て屋はそのままで、ボックスの「1匹目」に下記のコードを配置するだけでなかよしバッヂACEが実行できるようになります!

おすすめ実用ACEコード集

ここからは、環境構築後にすぐに使える実用的で強力なACEコードを紹介します。

※以下はすべて、上記で解説した「ボックス1匹目から読み込む設定(パパて[0x64]ん)」が完了している前提の配置スロット(1匹目〜)を記載しています。

1. 手持ち1匹目の個体値・努力値を最大にする(最強育成)

初代ポケモンの育成・厳選を一瞬で終わらせることができる、非常に利便性の高いコードです。手持ちの戦闘に置いたポケモンの個体値(全ステータスMAX)および努力値を最大まで引き上げます。

配置スロットニックネーム(文字列)
ボックス1匹目がむぜぺョ
ボックス2匹目べづづづづ
ボックス3匹目づづづづづ
ボックス4匹目づづづの

2. 手持ち1匹目の攻撃努力値のみを「0」にする(特殊アタッカー用)

混乱時の自傷ダメージや、相手からの「イカサマ(後世代に送る場合など)」のダメージを最小限に抑えるため、攻撃(こうげき)の努力値だけをあえて「0」に設定したい特殊アタッカー向けの専門的なコードです。

配置スロットニックネーム(文字列)
ボックス1匹目ョがむぜパ
ボックス2匹目ずづづの

3. 任意のポケモンを出現させる(ミュウ等も可能)

道具(アイテム)欄の個数を利用して、狙ったポケモンを野生で出現させるコードです。

【仕様と事前準備】

  • 手持ちの「4番目」の道具の個数0個 ではない時にこのコードを使用すると、3番目と4番目の道具の個数が強制的に 0個(内部的には256個の意味)になります。
  • 手持ちの「4番目」の道具の個数が最初から 0個(256個)の時にこのコードを使用すると、「3番目の道具の個数」と同じ【内部番号】のポケモンが野生で出現します。
  • 出現するポケモンのレベルは、「戦闘に入る直前に、ゲーム内で最後に参照されたポケモンのレベル」と同値になります。

⚠️ 注意:図鑑番号ではなく「内部番号」を指定すること

初代ポケモンの内部データにおいて、ポケモンは図鑑番号とは異なる「内部番号」で管理されています。

  • 例:ミュウ(図鑑番号:No.151 ➔ 内部番号:21)つまり、「3番目の道具の個数を21個」「4番目の道具の個数を0個」にした状態で以下のコードを実行すると、野生のミュウが出現します。その他のポケモンの内部番号については、解析サイト等の「内部コード表」を参照して個数を調整してください。
配置スロットニックネーム(文字列)
ボックス1匹目がめぜワョ
ボックス2匹目せぐガづず
ボックス3匹目づのずずか
ボックス4匹目ぜどじがみ
ボックス5匹目じづの

4. メッセージの表示速度を「最速(0フレーム)」にする

ゲーム内のテキスト表示を、システムの限界を超えた超高速(ウェイトなし)に変更する快適化コードです。

【仕様】

通常、ゲーム内の「せってい」で変更できる文字表示速度は、「はやい」で1フレーム、「ふつう」で3フレーム、「おそい」で5フレームのウェイトが挟まっています。このコードを実行すると、設定画面には存在しない「0フレーム(ウェイトなし)」になり、文字が一瞬で描写されるようになります。

※注意点として、実行後にゲーム内の「せってい」画面を開いてしまうと、表示が強制的に「ふつう」にリセットされてしまいます。また、この表示速度周りはセレクトバグを応用しても変更可能な領域であるため、バグ技の仕組みをより深く知りたい方は調べてみると面白いかもしれません。

配置スロットニックネーム(文字列)
ボックス1匹目ぼダぞがめ
ボックス2匹目ぜやルづの

なかよしバッヂACE実行時の注意点・リスク管理

任意コード実行(ACE)はゲームの根本的なシステムプログラムを書き換えるため、非常に高い自由度を誇る反面、一歩間違えると重大な不具合を引き起こします。以下のトラブルシューティング・鉄則を必ず守ってプレイしてください。

  • 必ず実行前にバックアップ(セーブ)を取る
    コードの入力ミスや手順の脱落があると、画面が暗転してフリーズしたり、最悪の場合セーブデータそのものが破損(初期化)します。実行直前のセーブは絶対です。3DS VC版であれば、セーブデータのバックアップ機能を併用するとより安全です。
  • 育て屋のポケモンを「最後に預けた状態」を維持する
    前述の通り、別のポケモンを預けたり引き取ったりして「パパてウん(または パパて[0x64]ん)」が最後に預けた個体でなくなると、なかよしバッヂを使用した瞬間に高確率でフリーズします。
  • コードの配置順・文字の間違いに注意する
    濁点・半濁点の有無、ボックスの配置順が1つズレるだけでもプログラムが暴走します。特に入力する文字が正しいか、実行前に入念に確認してください。
  • 信頼できるソースのACEコードのみを使用する
    ACEコードは機械語そのものです。悪意あるコードや、検証されていない不完全なコードを実行すると、ゲームが修復不可能な状態になる恐れがあります。必ず検証済みの正確なコードを使用しましょう。

おわりに

「なかよしバッヂACE」は、現代の初代ポケモンバグ技研究において、最も手軽かつ洗練された任意コード実行の手法です。

一度ベースとなる環境(サファリボールの調整、育て屋のニックネーム変更)さえ構築してしまえば、個体値の変更、図鑑のコンプリート、幻のポケモンの出現など、ゲームの世界を文字通り自由自在にリライトできるようになります。

現在でも海外を含めた有志コミュニティによって新しいACEコードや便利なプログラムが開発・公開され続けているため、一度環境を整えておけば、初代ポケモンを何倍も長く深く楽しむことができます。

また、実機だけでなく3DSのバーチャルコンソール(VC)環境でも完全に動作するため、セーブデータ管理ツールの「PKSM」等と組み合わせて、自分で捕まえた思い出のポケモンの個体値を調整して最新世代へ送る、といった楽しみ方も可能です。

ぜひ本記事のロードマップを参考に、初代ポケモンの奥深いバグ・任意コード実行の世界に挑戦してみてください!

GBC
スポンサーリンク

コメント